我从以下网址获取URL,但我得到以下错误获取JSON给NullPointerException异常
url = "http://qrpromenad.azurewebsites.net/api/question?id=1&imei=35404304";
public JSONObject getJSONFromUrl(String url) {
System.out.println(url);
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent(); // here i got null value
} catch (Exception e) {
e.printStackTrace();
}
以下是logcat的错误
04-17 16:00:12.739: W/System.err(4579): java.lang.NullPointerException
04-17 16:00:12.739: W/System.err(4579): at com.qrcodetest.JSONParser.getJSONFromUrl(JSONParser.java:40)
04-17 16:00:12.739: W/System.err(4579): at com.qrcodetest.Result$FetchURL.doInBackground(Result.java:50)
04-17 16:00:12.739: W/System.err(4579): at com.qrcodetest.Result$FetchURL.doInBackground(Result.java:1)
04-17 16:00:12.739: W/System.err(4579): at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-17 16:00:12.739: W/System.err(4579): at java.lang.Thread.run(Thread.java:1019)
但如果我用另一个URL像http://api.androidhive.info/contacts/它是工作正常
我已经使用POST方法,但仍NULL返回
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(Const.POST_URL);
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "1"));
nameValuePairs.add(new BasicNameValuePair("imei", "123456"));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
System.out.println("httpEntity "+httpEntity); // here is null
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {// false
is = httpEntity.getContent();
}
哪条线是40行程式码中加回? – mthmulders
给NPE的线是什么? (即JSONParser类的第40行) –
您是否修改了PHP脚本中的任何内容?检查它是否正确地返回你需要的json响应。 – SKK