Как создать составной http-запрос с помощью php - PullRequest
0 голосов
/ 03 января 2019

У меня есть Java API, где есть логическая проверка, является ли HTTP-запрос составным:

if (request instanceof MultipartHttpServletRequest)

И у меня есть php-запрос, отправляемый со стороны клиента в API, я использую league oauth2-client , который использует Guzzle. Составной http-запрос создается со следующим кодом:

    $fileslist = array();
    $fileslist[] = array( 
        'name' => 'files',
        'filename' => 'author.json', 
        'contents' => fopen('./author.json', 'r'), 
        '_filePath' => '/Bulk-Uploads/author.json' 
    );
    $fileslist[] = array( 
        'name' => 'files',
        'filename' => 'jkr.jpg', 
        'contents' => fopen('./jkr.jpg', 'r'), 
        '_filePath' => '/Bulk-Uploads/jkr.jpg' 
    );

    $options = array(); 
    $options['multipart'] = $fileslist; 
    $options['headers']['Authorization'] = 'bearer ' . $accessToken;

...

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

Теперь проблема в том, что когда запрос php Guzzle попадает в API, он НЕ является экземпляром MultipartHttpServletRequest. И заголовки запроса содержат только:

host = localhost:8080
content-length = 0
user-agent = GuzzleHttp/6.3.3 curl/7.54.0 PHP/7.1.19
authorization = Bearer ....
authorization = bearer ....

, который НЕ включает заголовок типа содержимого. Но в документации Guzzle похоже, что она должна генерироваться автоматически, если задано $ options [multipart].

Я использовал это неправильно? Как я могу создать многоэлементный HTTP-запрос с помощью PHP, и Java распознает его как MultipartHttpServletRequest?

Спасибо!

...