Php android HttpPost中的JSON_POST为空
我不明白我的帖子是空的 我创建了一个JSONOBJECT并将其传递给HTTPPost 像这样:Php android HttpPost中的JSON_POST为空,php,android,json,http-post,Php,Android,Json,Http Post,我不明白我的帖子是空的 我创建了一个JSONOBJECT并将其传递给HTTPPost 像这样: HttpPost post = new HttpPost(URL); StringEntity se = new StringEntity(json.toString()); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "
HttpPost post = new HttpPost(URL);
StringEntity se = new StringEntity(json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
post.setEntity(se);
response = client.execute(post);
但它显示为一个空数组
这是完整的代码
创建我的JSON对象(可以调试并填充它
public static final JSONObject GetJSONObject(Customer customer) {
try {
JSONObject values = new JSONObject();
values.put(Customer.KEY_NAME, customer._name); // Contact Name
values.put(Customer.KEY_PH_NO, customer._phone); // Contact Phone
values.put(Customer.KEY_EMAIL, customer._email);
values.put(Customer.KEY_UUID, customer._UUID);
values.put(Customer.KEY_GEOUUID, customer._geoUUID);
values.put(Customer.KEY_SALESREPUUID, customer._salesRepUUID);
values.put(Customer.KEY_CUST_LAST_UPDATE, customer.last_update);
values.put(Customer.KEY_CUST_NOTES, customer._notes);
return values;
} catch (JSONException e) {
Log.d("ERROR", e.getMessage());
System.exit(1);
}
return null;
}
启动发送线程
ma.ShowToastMsg("Updating Contract To mySQL" + customer._name);
mh.sendJSONTHREAD("http://.php",
GetJSONObject(customer));
public void sendJSONTHREAD(final String URL, final JSONObject json) {
new Thread(new Runnable() {
public void run() {
sendJson(URL, json);
}
}).start();
}
发送它
public void sendJson(final String URL, final JSONObject json) {
Looper.prepare(); // For Preparing Message Pool for the child Thread
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout
// Limit
HttpResponse response;
try {
HttpPost post = new HttpPost(URL);
StringEntity se = new StringEntity(json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
post.setEntity(se);
response = client.execute(post);
/* Checking response */
if (response != null) {
Log.d("RESPONSE", EntityUtils.toString(response.getEntity()));
//InputStream in = response.getEntity().getContent(); // Get the
// data in
// the
// entity
//Log.d("HTTPPOST", in.toString());
}
} catch (Exception e) {
e.printStackTrace();
// createDialog("Error", "Cannot Estabilish Connection");
}
Looper.loop(); // Loop in the message queue
}
还有PHP的一面
include("settings.php");
mysql_connect($loginURL,$username,$password);
@mysql_select_db($database) or die("-9");
echo var_dump($_POST);
$varname = mysql_real_escape_string(strip_tags($_POST['name']));
$varemail = mysql_real_escape_string(strip_tags($_POST['email']));
$varphone = mysql_real_escape_string(strip_tags($_POST['phone']));
$varUUID = mysql_real_escape_string(strip_tags($_POST['UUID']));
$vargeopointUUID = $_POST['geopointUUID'];
echo var_dump($_POST);
echo var_dump($_POST)-返回数组(0){}POST不希望传递JSON,而是如下所示的名称/值对:
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("key1", "value1"));
params.add(new BasicNameValuePair("key2", "value2"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
POST不希望传递JSON,而是希望传递名称/值对,如下所示:
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("key1", "value1"));
params.add(new BasicNameValuePair("key2", "value2"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
不明白-这里有很多教程和问题,人们成功地使用了(u POSTI checked HTTP(u RAW)POST(u POST)数据,我的所有数据都在里面-但是我无法填写变量-如果我使用json(u RAW)解码((HTTP(u RAW)u POST(u DATA['name')),它们返回为{Try
print(json(u RAW)u POST)
查看它的解析是否正确——或者如上所述发送URLEncodedFormEntity以避免整个混乱。如果您只是发送键/值对而没有嵌套,那么就没有理由用json发布数据。-这看起来打印正确…每个项都像这样打印到屏幕上-[UUID]=>d3a15359-bc45-417d-b228-28dc561df773那么我不能把它分配给这样一个变量吗???$varemail=json_decode($HTTP_RAW_POST_DATA['email']);你应该先解码,然后访问--json_decode($HTTP_RAW_POST_DATA)['email']
不明白-这里有很多教程和问题,有人成功地使用了{u POSTI检查过的HTTP_RAW_POST_数据,我的所有数据都在里面-但是我无法填写变量-如果我使用json_解码('HTTP_RAW_POST_DATA['name'),它们返回为{Tryprint_r(json_decode('HTTP_RAW_POST_DATA))
查看它的解析是否正确——或者如上所述发送URLEncodedFormEntity以避免整个混乱。如果您只是发送键/值对而没有嵌套,那么就没有理由用json发布数据。-这看起来打印正确…每个项都像这样打印到屏幕上-[UUID]=>d3a15359-bc45-417d-b228-28dc561df773那么我就不能把它分配给这样一个变量吗???$varemail=json_decode($HTTP_RAW_POST_DATA['email']);你应该先解码,然后访问--json_decode($HTTP_RAW_POST_DATA)['email']