Отправка файла в веб-сервис с помощью Guzzle

в течение нескольких часов пытался сделать запрос POST, который отправляет файл.

Сначала попробовал простойfile_get_contents() с контекстом потока, неКажется, не работает. Я никогда не получаю ответ, пока GET на другом URL работает.

Я искал в Интернете HTTP-клиента и нашел Guzzle, который был загружен 400k раз на Packagist; Я решил попробовать эту технологию. Хорошо задокументировано, но, увы, ошибка появляется и при публикации этого чертового файла.

$request = $client
    ->post('/files/')
    ->addPostFields(array('comments' => 'no value'))
    ->addPostFile('file', 'test.doc')
    ->setAuth($this->username, $this->password);

У меня ушло несколько часов на чтение и просмотр сети, чтобы выяснить, что у меня есть "417 Ожидание не удалось вопрос.



417 Expectation Failed

Expectation Failed
<p>The expectation given in the Expect request-header
field could not be met by this server.
The client sent</p><pre>    Expect: 100-Continue, 100-Continue
</pre>
<p></p><p>Only the 100-continue expectation is supported.</p>

После дополнительных поисков в Интернете я прочитал "Ожидайте: 100-продолжение " заголовок, который был автоматически отправлен Guzzle, поэтому я попытался:

$request->removeHeader('expect');

Теперь я получаю плохую просьбу:



400 Bad Request

Bad Request
<p>Your browser sent a request that this server could not understand.<br>
Request header field is missing ':' separator.<br>
</p><pre>zzle/3.7.3 curl/7.15.5 PHP/5.3.27</pre>
<p></p>

Распечатывая заголовки запроса, я обнаружил, что:

var_dump($request->__toString());

POST /files/ HTTP/1.1
Host: nunc57.qc.bell.ca
User-Agent: Guzzle/3.7.3 curl/7.15.5 PHP/5.3.27
Content-Type: multipart/form-data
Authorization: Basic bm92YTpzeW5hcHNl

Сейчас я'Я действительно в замешательстве, надеюсь, кто-то уже нашел решение этой проблемы. Я'Я очень устал от всего этого :(

Ответы на вопрос(1)

Ваш ответ на вопрос