如何使用PHP创建多部分HTTP请求

时间:2019-01-03 15:19:42

标签: java php http guzzle multipart

我有一个Java api,其中有逻辑检查HTTP请求是否为多部分请求:

if (request instanceof MultipartHttpServletRequest)

我有一个从客户端发送到api的php请求,我正在使用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 documentation中,只要指定了$ options [multipart],它就应该自动生成。

我使用错了吗?如何使用PHP构造一个多部分HTTP请求并将Java识别为MultipartHttpServletRequest?

谢谢!

0 个答案:

没有答案