Отправляя JSON на сервер с помощью HttpURLConnection, данные становятся ключом, а не значением

php android slim

72 просмотра

1 ответ

105 Репутация автора

В моем приложении я пытался отправить 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"}

Но когда я получил от сервера, он становится ключом элемента 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));

Но я все еще чувствую, что ошибаюсь, потому что я читаю с ключа, а не с ценности. Есть ли какое-то недопонимание или ошибка, приводящая меня к этой странной ситуации? Спасибо.

Автор: Rangtian Источник Размещён: 18.07.2016 04:14

Ответы (1)


1 плюс

4308 Репутация автора

Решение

Как упомянуто @geggleto:

если он не анализируется в getParsedBody, тогда тип содержимого неверен в вашем запросе.


Вы можете исправить это, отправив правильный заголовок:

httpConnection.setRequestProperty("Content-Type","application/json");
Автор: FirstOne Размещён: 18.07.2016 05:50
32x32