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


PHP Curl, Request data return in application/json

我正试图从API获得一些数据,我正在将其作为XML返回。

我更喜欢jSON格式,API文档说jSON格式和XML格式都可用。

医生说…

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

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

接受:application/xml接受:application/json

那么我如何在我的PHP代码中生成application/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格式的数据。

您应该修改在请求中设置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"
}