url = new URL(urlPath.toString());
urlconn = url.openConnection();
urlconn.setReadTimeout(5000);
urlconn.setConnectTimeout(5000);
is = urlconn.getInputStream();
byte[] buf;
String jsondata = "";
int n = -1;
if((n = is.read()) != -1){
buf = new byte[is.available()];
jsondata = new String(buf);
is.read(buf);
jsondata = "{" + jsondata; //<------ 이부분이 문제!! 강제로 넣어줘야만 파싱이 됨
is.close();
}
위의 소스에서 자꾸 "{" 이부분이 유실된 체로 String이 완성됩니다. 그래서 강제로 넣어줘야 하죠.
문제의 원인은 조건문에 is.read()를 먼저 써서 그런걸로 추측될 뿐입니다.
그러나 read()메소드를 쓰지 않고 is.available()메소드를 쓰면 -1이 나와버려서 분기처리가 안되는 문제가 있습니다.
read()를 하고나서야 is.available()메소드에 값이 정상적으로 들어오게 됩니다.
다른방법으로 String을 얻어야 하나요 ? 아니면 좋은 해결방법이 있을까요?