【问题标题】:Laravel 5 Http Request Curl JSON FailedLaravel 5 Http 请求 Curl JSON 失败
【发布时间】: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 我已修复接受空间,但我仍然得到相同的响应,而内容类型已删除

标签: php json laravel curl httprequest


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2014-11-19
    • 1970-01-01
    相关资源
    最近更新 更多