我正在尝试从API中获取一些数据,而我现在正以XML格式将其恢复。
我更喜欢它作为jSON,API Doc说它可以用jSON和XML。
文件说......
API目前支持两种类型的响应格式:XML和JSON
您可以使用请求中的HTTP Accept标头指定所需的格式:
接受:application / xml 接受:application / json
那么如何在我的PHP代码中生成applixation / json的Accept Header?
目前我的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格式的数据。
提前致谢。
答案 0 :(得分:19)
您应修改在请求中设置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"
}