0

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

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

upd:例如,这段代码使我的程序崩溃:

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

upd 2:它适用于我的手机,但不适用于模拟器!如何修复模拟器上的这种行为?

更新 3:已修复。

4

1 回答 1

1

查看HTTP Post 的示例

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

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

于 2012-07-02T16:49:36.690 回答