HTTP Post请求在真实设备上运行而不在Android模拟器上运行

时间:2012-09-24 15:35:25

标签: android http-post

我正在向Web服务器发出一个帖子请求,该服务器有一些PHP脚本可以返回一些数据。

当我在真实手机中运行代码时,代码运行良好。在模拟器上进行测试时,它不起作用。它会抛出“NULL POINTER EXCEPTION”。 exception.getMessage()告诉NULL

我还试图通过从浏览器应用程序直接在模拟器中请求URL来访问此服务器并且它可以正常工作。当然我得到的错误是没有发送帖子数据,因为我没有发送任何帖子参数但是它是可以访问的。我在开始时遇到了证书错误,但在我点击确定后它才有效。

尝试连接到我的开发计算机上的本地服务器(10.0.2.2)时遇到了同样的问题。我认为问题出在配置中,所以我将其上传到Web服务器但仍然遇到同样的问题:

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;
} 

1 个答案:

答案 0 :(得分:2)

通过使另一个模拟器定位到另一个平台版本来解决问题。我正在使用Google API处理Android 4。我使用Google API制作了另一个模拟器2.3 API 10。

感谢此处有人建议尝试其他模拟器或重新启动它。