Повторяйте запрос CURL multipart / form-data с клиентом Guzzle / League OAuth2 - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь повторить запрос CURL POST в Guzzle, но запрос Guzzle терпит неудачу.

Это запрос CURL, который успешно работает:

$file = new \CURLFile( $document );
$file->setPostFilename( basename( $document ) );

$ch = curl_init();
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_URL, $endpoint );
curl_setopt( $ch, CURLOPT_HTTPHEADER, [
                "Authorization: Bearer " . $accessToken,
                "Content-Type: multipart/form-data",
            ] );
curl_setopt( $ch, CURLOPT_POSTFIELDS, [ 'fileData' => $file ] );

$response = curl_exec( $ch );

И вот что я сейчас использую для запроса Guzzle, но он не работает:

$options['multipart'][] = [
    'name'      => 'fileData',
    'contents'  => fopen( $document, 'r' ),
    'filename'  => basename( $document ),
];

$request = $provider->getAuthenticatedRequest( 'POST', $endpoint, $accessToken, $options );

$response = $provider->getParsedResponse( $request );

Ответ на запрос Guzzle следующий:

{"message":"File cannot be empty","errors":[{"code":"Missing","fields":["document"]}]} 

Стоит отметить, что я использую библиотеку thephpleague / oauth2-client для отправки запроса. Я ищу любые несоответствия между этими двумя запросами или информацией о том, как я могу устранить эту проблему самостоятельно, так как я весь день крутил свои колеса на этом. Высоко ценится

...