PHP curl _exec возвращает HTTP/1.1 100 Continue и HTTP/1.1 200 OK, разделенные пробелом

Я вызываю службу из PHP, используя cURL, вот так:

$response = curl_exec($ch);

а заголовки запроса/ответа выглядят примерно так:

Запрос:

POST /item/save HTTP/1.1
Host: services.mydomain.com
Accept: */*
Content-Length: 429
Expect: 100-continue
Content-Type: multipart/form-data

Ответ:

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Fri, 06 Jul 2012 08:37:01 GMT
Server: Apache
Vary: Accept-Encoding,User-Agent
Content-Length: 256
Content-Type: application/json; charset=utf-8

за которым следует тело (json-кодированные данные ).

Проблема в том, что обычным делом является разделение заголовков и тела в ответе первой встреченной пустой строкой, за исключением этого случая, пустая строка находится после 100 Continue, и поэтому все остальное помещается в тело — и это json больше недействителен:-)

Итак, мой вопрос таков: :Каков общий способ справиться с этим? У меня выстроились 3 варианта:

  1. Укажите, что curl не должен ожидать 100-continue? (Как?)
  2. Укажите, что curl должен отправлять только заголовки последнего ответа? (Как?)
  3. Вручную проверять заголовки 100 Continueи игнорировать их и следующую за ними пустую строку? (В таком случае, могут ли произойти другие подобные вещи, которые я должен проверить вручную?)

Если я не упустил что-то очевидное, я уверен, что люди натыкались на это и решали это много раз!

24
задан jgivoni 6 July 2012 в 09:14
поделиться