1
我正在發送一個請求到Web服務器,有一些PHP腳本來返回一些數據。HTTP發佈請求工作在真實設備上,而不是在Android模擬器上工作
當我在真實手機中運行代碼時,代碼運行良好。在模擬器上測試時,它不起作用。它拋出「NULL POINTER EXCEPTION」。 exception.getMessage()告訴NULL
我也嘗試通過在瀏覽器應用程序中直接在模擬器中請求URL來訪問此服務器,並且它工作正常。當然,我得到的錯誤,沒有發送數據,因爲我沒有發送任何後期參數,但它是可及的。我在開始時遇到了證書錯誤,但在點擊確定後它仍然有效。
當我試圖連接到我的開發機器上的本地服務器(10.0.2.2)時,我遇到了同樣的問題。我認爲這個問題是在配置,所以我上傳到網絡服務器,但仍然得到了同樣的問題:
public String postData(ArrayList<String> params) {
String responseText=null;
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(SERVERURL);
Log.i(TAG, "Posting HttpPost .. . ");
//goes well till this line
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("long", params.get(0)));
nameValuePairs.add(new BasicNameValuePair("lat", params.get(1)));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
Log.i(TAG, "Posting httpclient.execute .. . ");
responseText = convertStreamToString(response.getEntity().getContent());
//responseText = EntityUtils.toString(response.getEntity());
if (responseText !=null) {
Log.i(TAG,"PRESPONSE TEXT:"+ responseText);
}
else
Log.i(TAG," Entity RESPONSE is NULL");
} catch (ClientProtocolException e) {
Log.i(TAG, " POST ClientProtocolException " +e.getMessage());
} catch (IOException e) {
Log.i(TAG, " POST IOException " +e.getMessage());
} catch (Exception el) {
Log.i(TAG, " POST Exception " +el.getMessage());
}
return responseText;
}
你可以擴展'當在模擬器上測試時,它不起作用。什麼不行?它是否會拋出異常?它是否返回null? – psubsee2003
拋出「NULL POINTER EXCEPTION」。 exception.getMessage()告訴NULL – MSaudi
嘗試在各種模擬器(不同的操作系統版本,不同的屏幕密度等)測試。我有大約15種不同的模擬器可供測試,而且我的應用程序在其中一個啓動時一直崩潰。該應用程序已在市場上幾個星期,我沒有抱怨類似的問題。 – Sababado