x -www -форма -urlencoded Vs json HTTP POST

Трудно решить,
в настоящее время я отправляю данные как x -www -form -urlencoded с помощью php lib curl с

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->arguments));

или

curl_setopt($curl, CURLOPT_POSTFIELDS, $this->arguments);

первый вопрос:второе кажется большей длиной контента, первое решение, вероятно, лучше?

Это удобно для плоских сообщений, таких как:

{
    "name": "John",
    "token": "2121232145",
    "code": "7",
    "data": "Hello"
}

Но у меня также может быть поле данных, представляющее объект, в этом случае я его кодировал, но делать это (URL-адрес, кодирующий Json ), ужасно многословные и уродливые сообщения,

С другой стороны, я попытался отправить его как тип содержимого application/json -

curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($this->arguments));

. длина содержимого -больше для небольших сообщений, но со встроенным json это явно лучше

Но x -www -form -urlencoded также близок к данным формы, которые мне нужно отправить, за исключением случаев, когда встроен json

Было бы не элегантно иметь 2 разных метода анализа сервлета в зависимости от типов контента, так что есть ли другой вариант?

14
задан 19 November 2012 в 14:19
поделиться