Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何与web XML/JSON API接口?_Php_Xml_Json_Api - Fatal编程技术网

Php 如何与web XML/JSON API接口?

Php 如何与web XML/JSON API接口?,php,xml,json,api,Php,Xml,Json,Api,我自己在学习php/xml/json和其他所有东西,而且我在学习某些东西的API。他们有文档,但我仍然不知道API是如何工作的。他们给你一个GET链接和API键,我知道你应该把API键放在请求链接中 我怎么称呼这个链接?当它给你一个简单的回答时意味着什么 如果你的请求是正确的,是否应该给出响应 我有点没有俱乐部 谢谢您在PHP中,您可能会遇到如下情况: // EDIT: only need to use urlencode() on user supplied variables //$url

我自己在学习php/xml/json和其他所有东西,而且我在学习某些东西的API。他们有文档,但我仍然不知道API是如何工作的。他们给你一个GET链接和API键,我知道你应该把API键放在请求链接中

我怎么称呼这个链接?当它给你一个简单的回答时意味着什么

如果你的请求是正确的,是否应该给出响应

我有点没有俱乐部


谢谢您

在PHP中,您可能会遇到如下情况:

// EDIT: only need to use urlencode() on user supplied variables
//$url = urlencode("http://xyz.com/api?apikey=foo&v1=bar&v2=baz");
$url = "http://xyz.com/api?apikey=foo&v1=bar&v2=baz";
$response = file_get_contents($url);
$response
将包含当您访问
$url
时输出的任何
xyz.com
字符串(如果您直接访问
$url
,您将看到该字符串)

您的下一项工作是根据其数据结构(如XML、JSON等)解析
$response
,以便代码的其余部分可以使用它

有几个PHP库用于解析XML或JSON。就个人而言,我更喜欢使用PHP5>=5.2.0中包含的
simplexmlement
json_decode()

根据API的不同,如果它不理解请求
$url
,可能会向您发送某种错误代码/响应结构,您可以在解析响应后检查该请求

如果
$response
返回false,则通常与
$url
通信时会出现一些错误

我发现思考这些
XHR
请求的一种直观方式是将参数(
GET
参数)传递给函数(API URL)。API URL的响应类似于函数的返回语句

更新:

OP在评论中建议的API示例:

$apikey = "client_id=abcd1234567890";
$division = "division_id=chicago";
$url = "http://api.groupon.com/v2/deals?" . implode("&", array($apikey, $division));
$response = file_get_contents($url);
$deals = json_decode($response, true);

foreach($deals['deals'] as $deal){
    $format = 'Deal: <a href="%s">%s</a><br/>';
    echo sprintf( $format, $deal['dealURL'], $deal['announcementTitle']);
}
$apikey=“客户号=abcd1234567890”;
$division=“division\u id=chicago”;
$url=”http://api.groupon.com/v2/deals?" . 内爆(&),数组($apikey,$division));
$response=file\u get\u contents($url);
$deals=json_decode($response,true);
foreach($deals['deals']作为$deal){
$format='Deal:
'; echo sprintf($format,$deal['dealURL',$deal['announcementTitle']); }
上面的代码将打印出芝加哥地区所有交易标题和URL的列表。如果您查看Groupon API页面上的
示例JSON响应
部分,它将为您提供映射到关联数组
$deals
的整个数据结构


如果用户提供了API的任何
GET
参数(例如,从web表单),您将需要执行类似
$division=“division_id=”的操作。urlencode($user\u input)

您可以将不同的学习分成不同的步骤。不需要从php调用api(有两个错误源),只需在浏览器中测试api调用(如果不知道,GET是当变量附加到url时,如dgilland的示例中所示),这样您就可以修改它,直到开始得到响应,然后进入php,在那里你可以用itI做一些事情。我试着用api来做,但是urlencode不起作用。我把它取下来,现在我得到了字符串和东西,但没有图像或其他任何东西。只是来自网站的文字(我猜)。有什么建议吗?我对
urlencode()
的错误。它将
&
更改为
%26
。不过,您希望将其应用于传递给
$url
的所有用户提供的值。至于您的特定API请求,您使用哪一个?大多数API只返回文本。当你说我必须将其应用于所有用户提供的值时,这意味着什么?另外,我正在使用如何从响应中获取某些值?我的想法和客户的想法一样?但是我怎么才能得到我想要的某些交易呢?哇!你太棒了!非常感谢你!我希望我能投赞成票!但是我没有足够的分数。这太棒了!我一直在寻找一个关于API之类的例子。非常感谢你。你为我澄清了很多。