我有一个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?
谢谢!