android httpclient使用url作为参数发送帖子?

时间:2013-06-07 04:34:53

标签: android httpclient

我将数据从android发送到网络,使用httpclient使用像这样的代码

DefaultHttpClient client = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://host");
    List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>();
    nvps.add(new BasicNameValuePair("method", "signIn"));
    nvps.add(new BasicNameValuePair("email",u));
    nvps.add(new BasicNameValuePair("password",pass));
    UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps,HTTP.UTF_8);
    httppost.setEntity(p_entity);

我有点困惑,如果这段代码将参数放入url作为参数,如url?method=a&email=b&password=c 或将参数放入帖子正文

我应该做的是构建一个http帖子到这个url url?method = a在邮件正文中包含电子邮件和密码参数

2 个答案:

答案 0 :(得分:2)

你应该阅读HttpMethods。根据定义,HttpPost传递其身体上的参数,而不是查询字符串中的参数。另一方面,HttpGet应该在查询字符串中传递参数。 此外, 实体 在这里代表身体。

答案 1 :(得分:1)

在同一个请求中混合使用URL参数和发布数据有点令人困惑。这并不是闻所未闻,但我建议您使用其他URL进行登录,例如http://www.yourhost.com/signin和POST用户名和密码。

您还应该考虑在HTTP调用周围使用包装器。与使用OkHttp,Volley或优秀的Android Asynchronous Http Client相比,使用DefaultHttpClient可以编写更多代码。使用Android Async Http Client(具有混合URL和POST参数)的示例:

AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("email", "u");
params.put("password", "pass");
client.post("http://host?method=signIn", params, new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(String response) {
        // handle response here
    }
});