我正在尝试通过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);
我得到同样的回答,没有,我做错了什么?
答案 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));
感谢jk2praj
和user20232359723568423357842364
的回答。
问候。