2012-06-30 182 views
0

我工作在我的第一个Android应用程序上,并且尝试进行HTTP POST请求和接收响应时遇到了一些问题。这些都是几个事实:最终无法执行HTTP POST请求

  1. 我有INTERNET权限在AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" />
  2. 我尝试了许多解决方案。使用URLConnection或HttpURLConnection的解决方案不起作用,因为它们返回空字符串。 HttpClient和HttpPost的解决方案在execute()上失败 - 我在Google上搜索了一个小时,但没有找到如何解决这个问题。
  3. There is internet connection。但我不知道如何解决我的问题,最后到发送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:它的工作原理我的手机上,而在仿真器不工作!如何修复模拟器上的行为?

upd 3:固定。

+1

首先你可以把你的代码放在这里,这样人们可以帮助你解决问题,它可能只是一个简单的UrlEncoding或简单的客户端配置。 – IamStalker

+0

好的,我更新了这篇文章。 – Uhehesh

+0

完全重复:http://stackoverflow.com/questions/3505930/make-in-http-request-with-android –

回答

1

看那example for HTTP Post

你也应该采用fiddler2帮助调试您的HTTP消息。

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

+0

太慢了。我已经解决了一个问题。 – Uhehesh

+1

你的评论表明你仍然有一个崩溃的问题...添加一个通用的excpetion捕获将防止发生。使用日志语句来查明正在发生的事情。 – Merlin