【问题标题】:How to get json data instead of XML using php curl(Exact online)如何使用 php curl 获取 json 数据而不是 XML(精确在线)
【发布时间】:2019-03-14 01:51:29
【问题描述】:

我正在尝试使用 PHP 的 curl 来发出 api 请求,并且我想获取 json 作为响应,但我一直在获取 XML 代码。

$curl_Items = curl_init();

curl_setopt_array($curl_Items, array(
    CURLOPT_URL => 'https://start.exactonline.nl/api/v1/1234567/logistics/Items?$select=Code,Description',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "Content-type: application/json;charset=utf-8",
        "Authorization: Bearer $access_token",
        "Cache-Control: no-cache",
        "Postman-Token: f181bd2f-5621-49ee-b1a5-d9f73a2a8825"
    ),
));


$ResultItems = curl_exec($curl_Items)

这在确切的在线常见问题页面上有说明:

Exact Online API 请求支持两种数据格式:JSON 和 XML。它们在标题中指定,如下所示:

Content-Type : application/json
Content-Type : application/xml

【问题讨论】:

  • 您有此在线常见问题解答或指南的链接吗?我最好的猜测是你需要调用另一个 URL 来获取 JSON 响应
  • Content-type: 是用小写的T写的,一般没问题,但是如果端点需要区分大小写怎么办?这是一个疯狂的猜测,但请尝试将 Content-type 中的第二个 T 大写

标签: php json xml curl


【解决方案1】:

我发现问题 Content-Type: application/json 用于发布数据并提供有关您发送内容的信息。我需要使用Accept:application/json 从 REST API 获取 json 数据。

代码:

$curl_Items = curl_init();

curl_setopt_array($curl_Items, array(
    CURLOPT_URL => 'https://start.exactonline.nl/api/v1/12345678/logistics/Items?$select=Code,Description',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
        "Accept:application/json",
        "Authorization: Bearer $access_token",
        "Cache-Control: no-cache",
        "Postman-Token: f181bd2f-5621-49ee-b1a5-d9f73a2a8825"
    ),
));


$ResultItems = curl_exec($curl_Items);

【讨论】:

    【解决方案2】:

    不确定我是否理解了这个问题,但如果我理解了。 那么这可能是你的答案:

    <?php
    header('Content-Type: application/json');
    $myArr = array("John", "Mary", "Peter", "Sally");
    echo json_encode($myArr);
     ?>
    

    【讨论】:

    • 他的问题是他一直在获取 xml,而他正在为 JSON 提供 Content-Type 标头,所以这不是一个真正的答案
    • 好的,谢谢清理。我看看能不能做点什么
    • @YaserAbdulrahman 感谢您的帮助,但我发现了问题。 Content-Type:application/json 用于发布数据。但我正在尝试获取数据,所以我需要使用 Accept:application/json.
    • @FlubberBeer 你可以回答你的问题并赢得一些声誉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多