Laravel 5 Http 请求 Curl JSON 失败

Posted

技术标签:

【中文标题】Laravel 5 Http 请求 Curl JSON 失败【英文标题】:Laravel 5 Http Request Curl JSON Failed 【发布时间】:2019-03-27 14:32:58 【问题描述】:

我在 laravel 5.4 上使用 Ixudra\Curl 进行 http 请求 然后我想用 JSON 作为表单主体做 POST 请求。 当我使用 postman 时,它可以工作,这是我的代码:

$headers = array(
'Accept:application/json'
);

$req_response = Curl::to("http://apiv2.jne.co.id:10102/thecore/insert")
->withData($data)
->withHeaders($headers)
->withContentType('application/json')
->asJson()
->withResponseHeaders()
->returnResponseObject()
->post();

当我打印此代码时返回


"content": null,
"status": 415,
"contentType": "text/html; charset=UTF-8",
"headers": 
"Date": "Tue, 23 Oct 2018 11:04:11 GMT",
"Content-Type": "text/html; charset=UTF-8",
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"Allow": "OPTIONS, POST",
"Max-Forwards": "20",
"Via": "1.0 oag02.domain (Gateway)",
"X-CorrelationID": "Id-2b00cf5bf1c8d929da1be213 0",
"X-ORACLE-DMS-ECID": "0005jT3HGX5DkZG5yzt1iW0003XF000I96",
"X-ORACLE-DMS-RID": "0:1"


查看标题 -> Content-Type 仍然使用 text/html 请求.. 有人有解决方案吗?我也在使用 curl_init ,当我使用没有 php (curl_init) 时成功但是,当我将代码复制到 laravel 时,请求返回到 x-www-urlencoded, 目标是,我想在 LARAVEL 上使用 JSON 作为数据进行 POST 谢谢。

【问题讨论】:

你试过 Guzzle 吗? @madalinivascu 我是,结果还是一样 您收到的状态为 415,因此您的数据结构可能有问题,而不是标题 您的Accept 标头在冒号后需要一个空格。尝试通过删除withContentType() 仅使用asJson(),因为asJson() 无论如何都会设置Content-Type 标头,并且$data 必须是array。否则检查 api 的文档 @morph 我已修复接受空间,但我仍然得到相同的响应,而内容类型已删除 【参考方案1】:

我认为您误解了包裹。 isJson() 方法不会将任何内容类型强制到 API 上,它只是告诉包将响应作为 JSON 数据处理。据我所知,该程序包工作正常,但正如@madalinivascu 指出的那样,您收到一个 415 错误代码,这表明您的数据存在问题。基本上,服务器检测到错误并返回带有 415 错误代码的响应,并将该响应编码为基本文本。我承认 API 以这种格式返回错误有点奇怪,但你必须接受它们。一旦您修复了导致 415 错误代码的数据问题,很可能会立即返回正确的 JSON 响应。

【讨论】:

以上是关于Laravel 5 Http 请求 Curl JSON 失败的主要内容,如果未能解决你的问题,请参考以下文章

laravel学习笔记——HTTP 客户端组件

PHP Curl请求Https接口

使用curl测试不安全的HTTP请求

window 10 用composer安装 基于 Laravel 5.3 的 Coaster CMS Curl错误77解决

源映射错误:请求失败,状态为 404 资源 URL:http://mywebsite/js/app.js 源映射 URL:bootstrap.js.map-laravel-Vue

laravel 5.5 的 cURL 错误 60 [重复]