我有以下 Postman 要求测试第三方API;
我尝试做的是使用Laravel的HTTP类将其转换为代码,我目前拥有的代码是;
public function uploadToThridParty()
{
$uploadContents = [
'id' => 'this-is-my-id',
'fileUpload' => true,
'frontfile' => Storage::get('somefrontfile.jpg'),
'sideview' => Storage::get('itsasideview.png'),
];
$request = Http::withHeaders(
[
'Accept' => 'application/json',
]
);
$response = $request
->asForm()
->post(
'https://urltoupload.com/upload', $uploadContents
)
}
但是每次我运行这个程序时,第三方API都会返回Invalid ID
,即使我使用相同ID的Postman,它也能正常工作。
我似乎找不出我的代码哪里出错了;
2条答案
按热度按时间hmae6n7t1#
正如@Cbroe提到的在发送发布请求之前附加文件,您可以像下面的示例一样:
我还认为您需要删除asForm方法,因为它将您的头接受类型重写为application/x-www-form-urlencoded,这是您的异常是无效ID的方式
9rbhqvlz2#
某些第三方API会要求您将请求的内容类型设置为
multipart/form data
您可以仔细检查所有的标题正在传递您的 Postman 请求标题选项卡和查看隐藏的标题。
如果您确实需要您的请求是在multipart/form-data中,您可以使用guzzle的
multipart
选项。尽管这似乎不在Laravel HTTP-Client docs上,但您可以在HTTP请求中简单地传递
asMultipart()
方法只需检查
/vendor/laravel/framework/src/Illuminate/Support/Facades/Http.php
以获取HTTP客户端的完整引用。你可以这样提出你的要求。