2016-05-13 3 views
0

Guzzle Httpリクエストにいくつかのデータを追加したいと思います。ファイル名、ファイル内容、ヘッダーには認証キーがあります。 http://docs.guzzlephp.org/en/latest/request-options.html#multipartGuzzle 6複数のデータを送信する

私がミスをした場所を知っている:

$this->request = $this->client->request('POST', 'url', [ 
    'multipart' => [ 
     'name' => 'image_file', 
     'contents' => fopen('http://localhost:8000/vendor/l5-swagger/images/logo_small.png', 'r'), 
     'headers' => 
      ['Authorization' => 'Bearer uCMvsgyuYm0idmedWFVUx8DXsN8QzYQj82XDkUTw'] 
      ]]); 

が、私はがつがつ食う6ドキュメントでエラー

Catchable Fatal Error: Argument 2 passed to GuzzleHttp\Psr7\MultipartStream::addElement() must be of the type array, string given, called in vendor\guzzlehttp\psr7\src\MultipartStream.php on line 70 and defined in vendor\guzzlehttp\psr7\src\MultipartStream.php line 79

を取得するには、このようなものでしょうか?ドキュメントを1として

+0

いくつかの例がここにあります:[パスワードの許可タイプで認証のsymfonyのOAuth2 APIクライアントを作成](http://www.inanzzz.com/index.php/post/l4zx/creating-a-symfony -oauth2-api-client-that-authenticate-with-password-grant-type)と[別のアプリケーションのguzzクライアントを使用したsymfony APIの使用](http://www.inanzzz.com/index.php/post/u0xf/ symfony-api-with-guzzle-client-from-another-application) – BentCoder

+0

しかし、これらのチュートリアルは以前のGuzzleバージョンです。私は最新バージョンを使用しています。 –

+0

最初のリンクはguzzle 6を使用します – BentCoder

答えて

4

ここでは、ソリューションです。アクセストークンを持つヘッダーはマルチパートセクションの外側にある必要があります。

$this->request = $this->client->request('POST', 'request_url', [ 
      'headers' => [ 
       'Authorization' => 'Bearer access_token' 
      ], 
      'multipart' => [ 
       [ 
        'Content-type' => 'multipart/form-data', 
        'name' => 'image_file', 
        'contents' => fopen('image_file_url', 'r') 
       ] 
      ] 
     ]); 
1

、「マルチパートの値が連想配列の配列である」、より深いあなたは巣に必要なので、1レベル:

$this->request = $this->client->request('POST', 'url', [ 
    'multipart' => [ 
     [ 
      'name' => 'image_file', 
      'contents' => fopen('http://localhost:8000/vendor/l5-swagger/images/logo_small.png', 'r'), 
      'headers' => ['Authorization' => 'Bearer uCMvsgyuYm0idmedWFVUx8DXsN8QzYQj82XDkUTw'] 
     ] 
    ] 
]); 
+0

私はコードをフォーマットしますが、同じエラーが発生します。 –

+0

@PrzemekGawłowski私はあなたがコードを異なってフォーマットする必要があるというわけではありません、あなたはmultipartオプションに "連想配列の配列"を与える必要があります。あなたのコードでは、ただ1つの連想配列を与えているだけです。私の例のように、余分な角括弧を囲みます。 – iainn

+0

あなたは正しく、私の悪いです。だから私はこのエラーメッセージを受け取りました:-( 'キャッチ可能な致命的なエラー:クラスGuzzleHttp \ Psr7 \ Responseのオブジェクトは、機能\文字列\ FeatureContext.php行の文字列に変換できませんでした246' –