使用cURL返回API XML响应

如果这很简单,请原谅我。 我的研究让我暂时停下来。 我正在尝试使用cURL来获取XML的API响应。</ p>

这是API的URL: https://api.weather.gov/alerts/active/region/land </ p>

默认情况下 以JSON返回。 我知道,我应该只使用JSON响应,但是有一个原因我需要它在XML中,因为它将无缝集成到我当前的代码中,直到我可以为JSON重写它。 </ p>

这是API的文档。 在API Reference选项卡下的状态我只需要将请求标题更改为application / cap + xml。 但我没有收到任何回报。 只是一个空白的白页。 </ p>

https://alerts-v2.weather.gov/documentation </ p>

这是我用来调用API的当前代码,但我没有得到任何回复。 我缺少什么?</ p>

 &lt;?php 

$ headers [] ='Connection:Keep-Alive';
$ headers [] ='Content- 键入:application / cap + xml; charset = utf-8';
$ headers [] ='接受:application / cap + xml';

$ userAgent ='php';

$ url = 'https://api.weather.gov/alerts/active/region/land';

$ cURL = curl_init();

curl_setopt($ cURL,CURLOPT_URL,$ url);
curl_setopt( $ cURL,CURLOPT_HTTPHEADER,$ headers);
curl_setopt($ cURL,CURLOPT_USERAGENT,$ userAgent);
curl_setopt($ cURL,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ cURL,CURLOPT_HTTPGET,true);

$ result = curl_exec($ cURL);

curl_close($ cURL);

?&gt;
</ code> </ pre>
</ div>

展开原文

原文

Forgive me if this is simple. My research has brought me to a halt at the moment. I am trying to use cURL to get the response of an API in XML.

This is the URL of the API: https://api.weather.gov/alerts/active/region/land

By default it returns in JSON. Which I know, I should just use the JSON response but, there is a reason I need it in XML as it will seamlessly integrate into my current code until I can rewrite it for JSON.

This is the documentation for the API. Under the API Reference tab is states I just need to change the request header to application/cap+xml. But I am not getting anything back. Just a blank white page.

https://alerts-v2.weather.gov/documentation

Here is my current code I am using to call the API but I get no response or anything. What am I missing?

    <?php

     $headers[] = 'Connection: Keep-Alive';
     $headers[] = 'Content-Type: application/cap+xml;charset=utf-8';
     $headers[] = 'Accept: application/cap+xml';

     $userAgent = 'php';

     $url = 'https://api.weather.gov/alerts/active/region/land';

     $cURL = curl_init();

     curl_setopt($cURL, CURLOPT_URL, $url);
     curl_setopt($cURL, CURLOPT_HTTPHEADER, $headers);
     curl_setopt($cURL, CURLOPT_USERAGENT, $userAgent);
     curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($cURL, CURLOPT_HTTPGET, true);

     $result = curl_exec($cURL);

     curl_close($cURL);

?>

1个回答



我刚试过你的代码,它可以和atom一起工作:</ p>

   $ headers [] ='接受:application / atom + xml'; 
</ code> </ pre>

“application / cap + xml”不适用于URL,就像你在上面提到的那样 但问题是。</ p>

根据文档 https:// alerts- v2.weather.gov/documentation 格式如下:</ p>

  / alerts / active / region / {region} =&gt;  JSON-LD(默认),ATOM 
/ alerts / {alertId} =&gt; JSON-LD(默认),CAP
</ code> </ pre>
</ div>

展开原文

原文

I've just tried your code and it works fine with atom:

$headers[] = 'Accept: application/atom+xml';

"application/cap+xml" is not available for the URLs, like you mentioned in a question though.

Per the doc https://alerts-v2.weather.gov/documentation the formats are following:

/alerts/active/region/{region} => JSON-LD (default), ATOM 
/alerts/{alertId}   => JSON-LD (default), CAP

drrrdo0802
drrrdo0802 在一天结束时,问题是由于两派。 我错过了回声。 我想做的事情也没有在CAP中提供。 所以需要咬紧牙关并尽快切换到JSON。
大约 3 年之前 回复
dongre6270
dongre6270 让我们在聊天中继续讨论。
大约 3 年之前 回复
dongque5529
dongque5529 是的,我理解但是,ATOM是他们试图摆脱的东西。 这是2017年5月的新API,因此保留了cap + xml。 这是一个例子。 此外,如果您从那里单击XML,它将使用cap + xml显示响应的预览,因此它得到了很大的维护。 alerts-v2.weather.gov/products/active?region_type=land
大约 3 年之前 回复
dongyuji7309
dongyuji7309 啊,我错过了回声。 我现在得到一个响应但是当我在cap + xml中请求它时,它以JSON返回它。
大约 3 年之前 回复
duanjiu3486
duanjiu3486 谢谢回复。 我用原子+ xml尝试了它,我什么都没有回来只是一个空白的白页。 这刚刚在5月更新,所以它不会过时,因为它刚刚发布了新的API。 以下是来自其页面的XML响应的示例。 alerts-v2.weather.gov/products/active?region_type=land
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐