Отправка файла в веб-сервис с помощью 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 Expectation Failed».

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>417 Expectation Failed</title>
</head><body>
<h1>Expectation Failed</h1>
<p>The expectation given in the Expect request-header
field could not be met by this server.
The client sent<pre>
    Expect: 100-Continue, 100-Continue
</pre>
</p><p>Only the 100-continue expectation is supported.</p>
</body></html>

После дополнительных поисков в Интернете я прочитал заголовок «Expect: 100-continue», автоматически отправляемый Guzzle, поэтому я попытался:

$request->removeHeader('expect');

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

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
zzle/3.7.3 curl/7.15.5 PHP/5.3.27</pre>
</p>
</body></html>

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

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)

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