没有从Android POST接收PHP中的params

时间:2014-03-31 06:43:31

标签: php android post android-asynctask params

我正在尝试通过POST请求在Android中登录AsyncTask,但在我的PHP代码中我没有收到任何参数,这是我的代码。

在我的Android代码中:

HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(Constants.MY_URL);
post.setHeader("content-type", "application/json");

JSONObject data = new JSONObject();
data.put("user", mUsername);
data.put("password", mPassword);
StringEntity entity = new StringEntity(data.toString());
post.setEntity(entity);

HttpResponse resp = httpClient.execute(post);
String respStr = EntityUtils.toString(resp.getEntity());

在PHP代码中:

$params = $this->getService()->getRequest()->getActionParams();
echo json_encode($params);

但在$params中没有任何内容,也许我需要为请求设置其他headers,或者我必须以不同的方式发送参数。有什么想法吗?

我也尝试过:

echo json_encode($_POST);

但我得到同样的,没有。

提前致谢!

问候。

更新:

我刚试过:

List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("user", mUsername));
pairs.add(new BasicNameValuePair("password", mPassword));
post.setEntity(new UrlEncodedFormEntity(pairs));
ResponseHandler<String> handler = new BasicResponseHandler();
final String response = client.execute(post, handler);

我得到同样的回答,没有,我做错了什么?

2 个答案:

答案 0 :(得分:1)

使用nameValuepair将数据发送到php

 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("user", 
         txtUser.getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("password",   
            txtPass.getText().toString()));
           httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        final String response = httpclient.execute(httppost,
                responseHandler);

答案 1 :(得分:1)

我发现了我的错误,我只需删除这一行:

post.setHeader("content-type", "application/json");

我必须使用jk2praj回答的内容:

List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("user", mUsername));
pairs.add(new BasicNameValuePair("password", mPassword));
post.setEntity(new UrlEncodedFormEntity(pairs));

感谢jk2prajuser20232359723568423357842364的回答。

问候。