【问题标题】:Use cURL to fetch XML and JSON data from my API [duplicate]使用 cURL 从我的 API 获取 XML 和 JSON 数据 [重复]
【发布时间】:2020-05-31 14:50:23
【问题描述】:

我给自己做了一个项目,其中涉及基本的 CRUD 操作,其中 Spring-boot Java 作为后端,PHP 作为前端。我已经启动并运行了我的 API,我已经使用 Postman 测试了路由,并且根据我在 postman like so 中设置的标头,我得到了响应。在这里,您还可以在我的 Java 后端代码中看到我确保我的 API 可以返回 XML 和 JSON。

@GetMapping(path = "/cabbage",
        produces = {
                MediaType.APPLICATION_XML_VALUE,
                MediaType.APPLICATION_JSON_VALUE,
        })
public @ResponseBody
Iterable<CabbageFarm> getCabbageData() {
    return cabbageRepo.findAll();
}

现在对我来说的问题是使用 cURL 来使用路由,以便将我得到的 JSON 或 XML 值存储在一个数组中以供进一步操作,但是当我这样做时,我得到 NULL。这是我的php代码。

<?php

    $ch = curl_init();
    $url = "localhost:8080/cabbage";
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: Accept:application/json"));
    $result = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($result, true);

    var_dump($data);
?>

在上面的这段代码中,我试图使用 JSON,因此

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: Accept:application/json"))

【问题讨论】:

    标签: java php spring-boot api crud


    【解决方案1】:

    可能是因为你过早关闭 curl 资源,试着把这几行颠倒过来

    curl_close($ch); $data = json_decode($result, true);
    

    喜欢这个

    $data = json_decode($result, true); curl_close($ch);
    

    【讨论】:

    • 我试过了,它仍然返回 NULL
    • 嗯,标题格式好像有问题,你能不能把array("Content-Type: Accept:application/json")改成这个array("Content-Type: application/json")。如果您查看 php 文档php.net/manual/fr/function.curl-setopt.php,它们会像这样进行预压缩。
    • 我试过了,还是不行
    • 看看这里,你需要得到真正的错误来解决这个问题。 stackoverflow.com/questions/3987006/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2018-02-11
    • 2021-07-15
    • 2017-11-10
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多