【问题标题】:httpPost not working androidhttpPost无法正常工作
【发布时间】:2014-08-15 16:23:09
【问题描述】:

我正在尝试向某个 url 发送 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 ,也根本没有命中。 请帮助。紧急。感谢所有答案。 谢谢你

【问题讨论】:

  • 响应信息是什么?你从服务器得到什么?
  • 在您的代码中,您将“someurl”替换为您自己的网址吧?
  • 是的。我使用了正确的 php 脚本网址。 @Damien R. 请看一下。我已经用responses再次编辑了这个问题

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


【解决方案1】:

尝试使用标准参数创建 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"));

【讨论】:

  • httppost.setEntity 无法解析您正在使用的库。可以分享一下吗
【解决方案2】:

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

编译组:'cz.msebera.android',名称:'httpclient',版本:'4.4.1.1'

等这个问题解决

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2016-09-01
    • 2012-07-11
    • 2018-04-08
    • 2017-04-20
    • 2018-10-02
    • 2016-09-04
    • 2010-10-06
    相关资源
    最近更新 更多