Отправка файла в веб-сервис с помощью 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
Сейчас я'Я действительно в замешательстве, надеюсь, кто-то уже нашел решение этой проблемы. Я'Я очень устал от всего этого :(