在我的应用中,我尝试使用JSON
发送HttpUrlConnection
数据:
URL url = new URL(urlString);
httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setDoOutput(true);
httpConnection.setChunkedStreamingMode(0);
OutputStreamWriter out = new OutputStreamWriter(httpConnection.getOutputStream());
// This write the data to server
Log.d("MyDebugMsg", json.toString());
out.write(json.toString());
out.flush();
out.close();
这就是JSON
字符串的样子:
{"name":"The Dark Knight","rating":"9"}
但是当我从服务器收到它时,它就成了一个值为null的Array元素的键。
Array
(
[{"name":"The_Dark_Knight","rating":"9"}] =>
)
我是PHP
和Slim
的新手,我的Php
代码如下:
$app->post(
'/add',
function($request, $response, $args) {
// $data = $request->getParsedBody();
// addMovieToDB($data);
$json = $request->getParsedBody();
print_r($json);
}
);
为什么我写入服务器的数据变成关键而不是值?我以这种方式从密钥中取出数据:
$array = $request->getParsedBody();
$data = json_decode(key($array));
但我仍然觉得我错了,因为我是从关键而非价值中读取的。是否有任何误解或错误导致我这种奇怪的情况?谢谢。
答案 0 :(得分:1)
正如@geggleto所说:
如果没有在getParsedBody中解析,那么内容类型是 你的请求错了。
您可以通过发送正确的标头修复:
httpConnection.setRequestProperty("Content-Type","application/json");