2017-06-22 3 views
0

私はGuzzleで新しく、PDFファイルに署名するためのRESTリクエストを作成しようとしています。プロバイダは言う:guzzle、マルチパート/フォームデータでコンテンツタイプを強制する方法

  • あなたはリクエストが送信されたファイルは、アプリケーション/ octet-でなければならないPOSTリクエスト
  • MIMEタイプがマルチパートでなければなりません/フォームデータ
  • でなければならないBASIC認証
  • を使用する必要がありますストリームとその名前が送信されたデータは、アプリケーション/ JSONとその名前でなければなりません「ファイル」
  • は「データ」

システムは、ARを返すべきであるべきです署名されたPDFファイルを含み、タイプがアプリケーション/オクテットストリームである

これは私がGuzzleでテストしたコードですが、プロバイダはapplication/pdfで送信されたMIMEタイプを示しています。 PDFファイルのMIMEタイプを「強制」にするにはどうすればよいですか?

$client = new Client([ 
    'auth' => ['login', 'password'], 
    'debug' => true, 
    'curl' => [ 
        CURLOPT_PROXY => '192.168.1.232', 
        CURLOPT_PROXYPORT => '8080', 
        CURLOPT_PROXYUSERPWD => 'username:password', 
      ], 
]); 
$boundary = 'my_custom_boundary'; 
$multipart = [ 
      [ 
       'name'  => 'data', 
       'contents' => "{'nomDocument':'documentTest.pdf','externalid':'123456'}", 
       'Content-Type' => 'application/json' 
      ], 
      [ 
       'name'  => 'file', 
       'contents' => fopen('documentTest.pdf', 'r'), 
       'Content-Type' => 'application/octet-stream' 
      ], 
     ]; 

$params = [ 
    'headers' => [ 
     'Connection' => 'close', 
     'Content-Type' => 'multipart/form-data; boundary='.$boundary, 
    ], 
    'body' => new GuzzleHttp\Psr7\MultipartStream($multipart, $boundary), 
]; 

try{ 
    $response = $client->request('POST', 'https://server.com/api/sendDocument', $params); 
} catch (RequestException $e) { 
    echo Psr7\str($e->getRequest()); 
    if ($e->hasResponse()) { 
     echo Psr7\str($e->getResponse()); 
    } 
} 

ありがとうございました。

答えて

0

あなたはGuzzle Documentation

$multipart = [ 
     [ 
      'name'  => 'data', 
      'contents' => "{'nomDocument':'documentTest.pdf','externalid':'123456'}", 
      'headers' => [ 'Content-Type' => 'application/json'] 
     ], 
     [ 
      'name'  => 'file', 
      'contents' => fopen('documentTest.pdf', 'r'), 
      'headers' => [ 'Content-Type' => 'application/octet-stream'] 
     ], 
    ]; 

ヘッダ

でのContent-Typeを渡す必要がありますが、すべてのマルチパートデータのヘッダを指定することができると言います。 ヘッダーを設定していない場合Guzzleはファイルに基づいてContent-Typeを置きます。

関連する問題