httpPost无法运行android

时间:2014-06-25 07:47:22

标签: android android-asynctask http-post android-internet

我正在尝试向某个网址发送httpPOST请求。这是我的代码。 我使用的是我在网上找到的ASync Task方法

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new MyHttpPost().execute();

}
private class MyHttpPost extends AsyncTask<String, Void, Boolean> {


        @Override
    protected Boolean doInBackground(String... arg0) 
    {

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://someurl");

            try {
             // Add your data
           List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair(4);
            nameValuePairs.add(new BasicNameValuePair("User", "abcd"));
            nameValuePairs.add(new BasicNameValuePair("email", "1234"));
            nameValuePairs.add(new BasicNameValuePair("password", "abcd"));
            nameValuePairs.add(new BasicNameValuePair("username", "1234"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
           HttpEntity httpEntity = response.getEntity();
           result = httpEntity.getContent();


            } catch (ClientProtocolException e) {
             // TODO Auto-generated catch block
            } catch (IOException e) {
             // TODO Auto-generated catch block
            }
            return true;
    }

    }



 }

我还在清单

中声明了网络权限
uses-permission android:name="android.permission.INTERNET" 
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 

然而,在执行应用程序后,我的服务器数据库没有显示任何命中。 即使我注释了我添加数据的列表,即使是空白的httpPost,也没有任何点击。 请帮助。急。所有答案都表示赞赏。 谢谢

2 个答案:

答案 0 :(得分:0)

尝试使用标准参数创建DefaultHTTPClient。

HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,
        HttpVersion.HTTP_1_1);
HttpClient httpClient = new DefaultHttpClient(params);

这对我来说很好。

我还使用UTF-8编码设置请求实体:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));

答案 1 :(得分:0)

以上所有代码都有效但我们需要为HttpPost实现依赖,并进一步与其他服务器(如oracle等)进行通信。 依赖文件是:

编译组:&#39; cz.msebera.android&#39; ,名称:&#39; httpclient&#39;,版本:&#39; 4.4.1.1&#39;

此问题解决后