Правильный способ вычисления длины содержимого ассоциативного массива в PHP

#php #curl

Вопрос:

Является ли приведенный ниже правильный способ вычисления content-length ассоциативного массива POST в PHP CURL?

 $contentLength = strlen(json_encode($myAssocArray)); // is this correct??

...

$headers = array(
  'Content-Type: application/json',
  "Content-length: $contentLength"
);
 

Я получаю 100 ответы HTTP, что заставляет меня думать, что моя длина содержимого неверна. Примечание.Я знаю, что CURL может автоматически вычислять заголовок длины содержимого, но если я не включу этот заголовок для сервера, на который я отправляю это, они отправят ответ HTTP 411 (Требуемая длина).

Комментарии:

1. Какое значение вы отправляете в cURL, json_encode($myAssocArray) ? Содержит ли значение многобайтовые символы? Если вы установите для длины содержимого недопустимое значение ( 1 ), получите ли вы тот же ответ? Обычно 100 код ответа означает, что все «В порядке», и вы можете продолжить запрос или проигнорировать ответ, если запрос завершен. Что указывает API, с которым вы взаимодействуете, для требований к запросу? НАПРИМЕР: отправьте заголовки, затем отправьте тело и т. Д.

2. Почему бы вам не выполнить функцию count() в массиве?