Php Android通过post方法向服务器发送大型JSON对象
我们正在尝试使用以下代码从android应用程序向服务器发送一个大型JSON对象(包含100多个键值对)Php Android通过post方法向服务器发送大型JSON对象,php,android,json,Php,Android,Json,我们正在尝试使用以下代码从android应用程序向服务器发送一个大型JSON对象(包含100多个键值对) URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); JSONObject dt = new JSONObject(); try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
JSONObject dt = new JSONObject();
try {
dt.put("test", "test");
} catch (JSONException e) {
e.printStackTrace();
}
urlConnection.setDoOutput(true);
// is output buffer writter
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setRequestProperty("Accept", "application/json");
//set headers and method
Writer writer = new BufferedWriter(new OutputStreamWriter(urlConnection.getOutputStream(), "UTF-8"));
writer.write(String.valueOf(dt));
// json data
writer.close();
在服务器端PHP中
$data = json_decode(file_get_contents('php://input'));
echo (string) $data;
但它返回空值,我们如何将JSON对象从android应用程序传递到服务器
编辑:我们可以通过
文件获取内容('php://input“)
作为{“test1”:1234567890,“test2”:“test”}
但使用json_decode
时返回空值。我们还尝试使用UTF-8
编码格式返回数据,该格式以原始格式发送数据,即%7B%22test1%22%3A1234567890%2C%22test2%22%3A%22test%22%7D
,但它也无法解码。顺便说一句,json\u last\u error()
返回4。您使用的是什么版本的PHP?有关v5.6之前的限制,请参阅。为什么不使用$\u POST超全局变量来接收数据?还要确保post_max_size足够高,请参阅:我们使用的是PHP5.4.45,我们尝试了$\u post
也返回NULL。您正在解码一个phpstdClass
,它不能转换为字符串。您的php可能在echo
行失败。还尝试了$data=$\u POST['test'];回波数据代码>但返回NULL。错误4表示JSON\u错误\u语法,因此JSON对象似乎有问题。如果我将您的json对象和POST一起发送到一个php文件,然后像这样读取它,那么它对我很有用。您的第二种格式是url编码的,因此您必须首先对其进行解码<代码>$input=文件\u获取\u内容('php://input'); $obj=json_解码($input);var_dump($obj)$编码=“%7B%22test1%22%3A1234567890%2C%22test2%22%3A%22test%22%7D”$decoded=urldecode($encoded);var_dump(json_decode($decode))代码>