最终无法执行HTTP POST请求

时间:2012-06-30 18:59:50

标签: android http post

我在第一个Android应用程序上工作,尝试发出HTTP POST请求和接收响应时遇到了一些很大的问题。这几个事实:

  1. 我在AndroidManifest.xml中拥有INTERNET权限:  <uses-permission android:name="android.permission.INTERNET" />
  2. 我尝试了很多解决方案。使用URLConnection或HttpURLConnection的解决方案不起作用,因为它们返回空字符串。使用HttpClient和HttpPost的解决方案在执行()时失败 - 我在Google上搜索了一个小时,但没有找到解决方法。
  3. 互联网连接。但我不知道如何解决我的问题,最后发送HTTP POST请求。
  4. 更新:,例如这段代码使我的程序崩溃:

    public static APIResponse getResponse(String action, Map<String, String> params) throws IOException {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://google.com");
    
        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("id", "12345"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
    
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
        return null;
    }
    

    更新2:它适用于我的手机,但无法在模拟器上运行!如何在模拟器上修复该行为?

    更新3:已修复。

1 个答案:

答案 0 :(得分:1)

查看example for HTTP Post

您还应该使用fiddler2来帮助调试HTTP消息。

另请注意,您没有正确捕获所有异常...您可以在最后添加一个通用的catch语句,以防止您的应用程序崩溃并帮助您找出问题所在。可能是超时或类似。

相关问题