PHP Curl,请求数据返回application/json

问题描述 投票:0回答:2

我正在尝试从 API 获取一些数据,目前我正在以 XML 形式将其返回。

我更喜欢它作为 jSON,并且 API 文档说它可以在 jSON 以及 XML 中使用。

文档说...

API目前支持两种类型的响应格式:XML和JSON

您可以使用请求中的 HTTP Accept 标头指定所需的格式:

接受:应用程序/xml 接受:application/json

那么如何在 PHP 代码中生成 applixation/json 的 Accept 标头?

我目前的 PHP 代码是:

header('Content-Type: application/json');

$endpoint = "http://api.api.com";

//  Initiate curl
$ch = curl_init();

// Set The Response Format to Json
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json'));

// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Set the url
curl_setopt($ch, CURLOPT_URL,$endpoint);

// Execute
$result=curl_exec($ch);

// Closing
curl_close($ch);

echo $result;

结果的回显只是返回XML格式的数据。

提前致谢。

php api curl
2个回答
28
投票

您应该修改在请求中设置 HTTP 标头的代码。您没有指定

Accept
标题

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));

这应该将 HTTP 请求发送到 API 的 URL,其中包含您希望以特定格式获取响应的信息。

编辑(以防这对某人有用):

  • Accept
    标头是请求标头,它指定响应正文的可接受类型
  • Content-Type
    标头既是请求头又是响应标头,它指定请求/响应正文的格式

HTTP 请求的示例可能如下所示(通常,请求仅包含标头部分):

GET /index.html HTTP/1.1
Host: www.example.com
Accept: application/json

响应可能看起来像这样:

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 24

{
    "hello": "world"
}

0
投票

header('内容类型:application/json');

$端点=“http://api.api.com”;

// 启动卷曲 $ch =curl_init();

// 设置响应格式为Json curl_setopt($ch, CURLOPT_HTTPHEADER, array( '内容类型:application/json'));

// 禁用 SSL 验证 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// 将返回响应,如果为 false 则打印响应 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//设置url curl_setopt($ch, CURLOPT_URL,$endpoint);

//执行 $结果=curl_exec($ch);

// 结束 curl_close($ch);

回显$结果; El Eco del resultado simplemente devuelve

© www.soinside.com 2019 - 2024. All rights reserved.