Laravel中原生CURL转Http facade调用返回空响应如何解决?
你当前的写法存在两个核心错误:
- 手动指定了
multipart/form-data请求头但未携带正确的boundary分隔符,服务端无法识别请求体结构,导致参数解析失败 - Laravel Http Facade不支持直接传入
\CurlFile对象,需要使用官方提供的文件上传方法传递附件
正确实现代码
$http = Http::withOptions([ 'debug' => true, ]); $response = $http // 三个参数分别对应:表单字段名、文件资源流、文件原名 ->attach('xmlFile', fopen($params['file']->getPathName(), 'r'), $params['file']->getClientOriginalName()) ->post($endpoint, [ 'textData' => $xml->asXML(), ]); dump($response->body()); die;
补充说明
- 不需要手动设置
Content-Type请求头,Laravel会在检测到有文件上传时,自动生成带正确boundary参数的multipart/form-data头 - 如果需要自定义上传文件的MIME类型,可给
attach方法传第四个参数:['Content-Type' => 'text/xml'] - 请确认
$endpoint变量值与原生CURL中的请求地址完全一致,排除请求地址错误的可能
内容的提问来源于stack exchange,提问作者GPiter
相关产品推荐
相关产品推荐

