我从reader.readLine()
获得了数据。但它不会进入while循环。返回'json'字符串为空。
有人请帮我解决这个问题。我已经尝试了很多正确的解决方案。
try {
URL urL = new URL(url);
urlConnection = (HttpURLConnection) urL.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlConnection.addRequestProperty("Accept", "application/json");
urlConnection.setConnectTimeout(10000);
urlConnection.setReadTimeout(15000);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("PackageName", packagename);
String query = builder.build().getEncodedQuery();
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
urlConnection.connect();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuffer result = new StringBuffer();
Log.e("READER","....."+reader.readLine());
String line=reader.readLine();
while (line != null) {
result.append(line).append('\n');
}
json=result.toString();
in.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
Log.e("RESULT","...."+json);
return json;
答案 0 :(得分:0)
删除日志中的额外reader.readLine()
Log.e("READER","....." + reader.readLine());
试试这段代码,
Log.e("ResponseCode", "" + urlConnection.getResponseCode());
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuffer result = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
json = result.toString();
in.close();
答案 1 :(得分:0)
这是基本的,也许你错过了它:
json=result.toString();
in.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
Log.e("RESULT","...."+json);
if (json!=null)
return json;
它将跳过空指针异常:
答案 2 :(得分:0)
如果你所做的只是从API下载一个jsonString,这应该让你解决:
String jsonString = "";
try {
URL mURL = new URL(yourURL);
HttpURLConnection mHttpURLConnection;
mHttpURLConnection = (HttpURLConnection)mURL.openConnection();
mHttpURLConnection.setDoInput(true);
mHttpURLConnection.connect();
InputStream mInputStream = mHttpURLConnection.getInputStream();
int i = 0;
while ((i = mInputStream.read()) != -1) {
jsonString += (char) i;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.e("JSON","Json String received: " + jsonString);