将CURL转换为Http facade laravel



我有这个代码:

$httpParams = [
'textData'  =>  $content,
'xmlFile'   =>  new CurlFile($params['file']->getPathName())
];
$curlHandle = curl_init('http://url.com');
curl_setopt($curlHandle, CURLOPT_HEADER, false);
curl_setopt($curlHandle, CURLOPT_POST, true);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $httpParams);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
$curlResponse = curl_exec($curlHandle);
curl_close($curlHandle);
dump($curlResponse);die();

我在$curlResponse中有响应,状态=200

但当我尝试使用laravel的Http:时

$http = Http::asForm();
$httpParams = [
'textData'  =>  $content,
'xmlFile'   =>  new CurlFile($params['file']->getPathName())
];
$response = $http->send('post', 'http://url.com', $httpParams)->body();
dump($response);

响应为空:""。状态为200。你能帮我吗,为什么使用Http facade我有空响应?提前Thx。请帮帮我!!!

您可以在单独的类中编写可重用的方法

public function apiCall($url, $method = "get",$data=[])
{
$htppCall = Http::withHeaders([
'Content-Type' => 'application/json',
])->{$method}($url,$data);

if ($htppCall->status() == 401) {
//error handling
}

return $htppCall->object();
}

然后像这样打

$httpParams = [
'textData'  =>  $content,
'xmlFile'   =>  new CurlFile($params['file']->getPathName())
];
$response=$this->apiCall($url,'post',$httpParams);
dd($response);

导入右立面

use IlluminateSupportFacadesHttp;

检查的状态代码

$htppCall->status()

以获取作为对象的数据

$htppCall->object()

以阵列形式获取数据

$htppCall->json()

检查客户端错误

$htppCall->clientError()

检查服务器错误

$htppCall->serverError()

获取响应的正文。

$htppCall->body()

如果有任何问题,请在评论中告诉我

最新更新