如何与 Web XML/JSON API 交互?

2024-01-08

我正在自己学习 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);

The $response将包含一个字符串xyz.com访问时输出$url(如果您访问过,您会看到$url直接地)。

你的下一个工作是解析$response基于其数据结构(例如 XML、JSON 等),以便其余代码可以使用它。

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

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

If $response返回 false,则通常与通信时出现一些错误$url.

我发现有一种直观的方式来思考这些XHR请求是您传递参数(GET参数)到函数(API URL)。 API URL 的响应就像函数的 return 语句。

UPDATE:

API 示例Groupon http://sites.google.com/site/grouponapiv2/api-resources/deals正如OP在评论中所建议的:

$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']);
}

上面的代码将打印出芝加哥地区所有交易标题和网址的列表。如果你看一下Sample JSON ResponseGroupon API 页面上的部分,它将为您提供将映射到关联数组的整个数据结构$deals.

如果有任何一个GETAPI 的参数由用户提供(例如,从 Web 表单),您将需要执行类似的操作$division = "division_id=" . urlencode($user_input);.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何与 Web XML/JSON API 交互? 的相关文章

  • 当异常抛出到路由之外时,如何在 Slim 框架中传递错误页面?

    我正在尝试了解处理 Slim 框架应用程序中抛出的异常和最终页面交付的操作顺序 基本上 如果我在类中抛出异常 我希望 Slim 提供漂亮的 Twig 500 页面 但当在路由之外抛出异常时 我什至无法让 Slim 提供自己的正常错误页面 给
  • 使用ip地址访问时删除index.php

    我在服务器上上传了 codeigniter 项目 从 URL 中删除 index php 不起作用 我使用IP地址访问它 喜欢http ip http ip地址 下面是我的htaccess
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • JSON 为 foreach() 提供的参数无效

    我在从 JSON 检索数据时遇到一些问题 它总是说为 foreach 提供的参数无效 这是 url php 中的 JSON nama IT SERVICE SOLUTION nilai 0 periode 11 tahun 2014 nam
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • array_udiff_assoc() 和 array_diff_uassoc() 有什么区别?

    有什么区别array udiff assoc and array diff uassoc For array udiff assoc 我有这个代码 function myfunction v1 v2 if v1 v2 return 0 re
  • 如何在phonegap应用程序中使用存储在localStorage中的json feed?

    这就是我正在做的 向我的网络服务器发出请求 响应采用 json 格式 使用 jquery 模板在我的应用程序中呈现回调数据 非常简单 就像魅力一样 问题是 我想在本地存储一些数据 这样我的应用程序就不必每次都从服务器获取它 3g 很慢 每笔
  • 如何修复网站 iframe 错误?

    当我访问此网址时 警告 推荐使用一些广告拦截器 网页链接加载良好 没有错误 但是 当我尝试通过加载同一页面时iframe在我的html代码中 出现错误 我的html代码
  • 在 json 中解析尾随字符

    我正在尝试检查 json 是否有效 并且我遇到了奇怪的行为 当我将一些字符附加到可解析的 json 时 jackson 和 gson 都会解析它 并且它们会忽略尾随字符 我想检查 json 是否严格有效 请帮忙 我尝试了几个标志mapper
  • 为什么index.html优先于index.php?

    我在服务器上有一个网站 主页是 example com index php 好的 我将一个名为 index html 的文件上传到服务器 根目录 当我在浏览器的 URL 栏中输入站点的域时 我感到惊讶 因为 index html 页面已加载
  • 覆盖默认标识符生成策略对关联没有影响

    交响乐 2 7 2 学说 ORM 2 4 7 MySQL 5 6 12 PHP 5 5 0 我有一个具有自定义 ID 生成器策略的实体 它工作完美 在某些情况下 我必须使用 手工制作 的 ID 来覆盖此策略 当主实体在没有关联的情况下被刷新
  • 如何使用 Laravel Eloquent 返回多重关系?

    我有一张桌子叫users 每个用户都有不同的事情 country device computer category 我为上述每一个 事物 创建了一个表格 类似如下 1 United States 2 United Kingdom 3 Aus
  • Laravel 作业推送至 Amazon SQS 但未处理

    我正在运行 Laravel 5 3 我正在尝试测试队列作业 并且我已将队列配置为使用 Amazon SQS 我的应用程序能够将作业推送到队列中 并且我可以在 SQS 中看到该作业 但它留在那里 从未被处理 我尝试过跑步php artisan
  • 如何为键盘上的 xml 中的功能键设置不同的背景?

    我正在开发 Android 键盘应用程序 我尝试为普通键和功能键设置不同的背景 但它不起作用
  • 是否必须配置 PHP 才能通过 PHP 扫描每个目录的配置 INI 文件(即我的情况下的 .htaccess 文件)?

    我在用着Windows 10 家庭单语言 64 位操作系统在我的机器上 我已经安装了最新的副本XAMPP服务器在我的机器上附带PHP 7 2 7 我从 PHP 手册中阅读了以下页面 扫描目录 https secure php net man
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上
  • 按通用值对值进行分组:userid 和 ipaddress

    我正在解决数据库中的一个问题 我正在尝试查找使用多个帐户的用户 我有一个用户 ID 和使用的 IP 地址的列表 如下所示 用户 ID IP 地址 1 IP 地址 13 2 IP 地址 23 1 IP 地址 12 4 IP地址56 9 IP
  • Mongodb - 为现有集合添加架构

    我的 MongoDB 中有一个包含 1300 万条记录的集合 不幸的是 当我创建这个集合时 没有为其创建模式 我想知道除了备份整个数据库 创建架构并上传所有数据之外 是否有任何方法可以添加 JSON 架构 您可以使用以下方法将 JSON 架
  • Smarty输出空白页

    已解决 模板文件错误 我有这样的 Smarty 设置 require once smarty Smarty class php smarty new Smarty smarty gt compile dir compile dir smar
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa

随机推荐

  • Tkinter.text - 如何计算动态字符串的高度?

    我有一个Text包含自定义字符串的小部件 n字符 多行 该小部件放置在垂直方向内panedwindow我想调整panedwindow的窗框显示整个字符串Text widget 该字符串本质上是动态的 这意味着它正在通过我的应用程序中的其他方
  • Qt:在整个表单上应用字体更改

    我有许多使用 Qt Designer 创建的表单 Qt 4 8 我想从某个地方更改所有表单的字体 在 Windows 中 QApplication setFont font 工作完美 不幸的是 似乎有一个错误 我不知道这是否错误报告 htt
  • 下拉菜单填充相同的列表项

    我有一个 Gridview 其中有两个下拉列表模板字段 我在运行时将它们绑定到相同的列表项 li new listitem 1 1 dl1 items add li dl2 items add li li new listitem 2 2
  • 如何将 Windows cmd stdout 和 stderr 重定向到单个文件?

    我正在尝试重定向 a 的所有输出 stdout stderr Windows命令 https learn microsoft com en us windows server administration windows commands
  • Django:如何聚合/注释多对多关系?

    我有一个 Person 模型和一个 Tag 模型 它们之间有一个 m2m 我需要提取与给定人员查询集中最多记录相关的标签以及计数 有没有一种优雅 有效的方法来使用 Django ORM 提取它 更好的是 有没有办法通过一些注释来获取整个标签
  • 如何确定 Google Play 服务的版本?

    我正在从 Eclipse 迁移到 Android Studio 我有一个导入到 Android Studio 中的项目 该项目使用 Google Play 服务 因此我遵循在这里找到的文档 http developer android co
  • 清除 NSTableView 内容

    我有一个NSTableView里面充满了来自程序的数据 我有一个重置按钮 除了用于程序的其他部分之外 should清除NSTableView的数据 但是 我完全不知道该怎么做 我还在学习 Obj C 您可以通过调用从 NSTableView
  • Observable 终于订阅了

    根据本文 http paqmind com posts rxjs error and completed events demystified onComplete and onError的功能subscribe是互斥的 意思是要么onEr
  • 如何在rails中的text_area_tag中插入占位符文本?

    我正在使用以下代码来生成textarea tag 渲染后 它会生成以下 HTML
  • Excel 文件 - 它已被其他用户以独占方式打开,

    我正在使用 C 读取 excel 文件 下面是按预期工作的代码 除了每次运行应用程序时 我都必须关闭 excel 文件 否则我会收到以下错误消息 The Microsoft Access database engine cannot ope
  • 在 Cocoa Touch 中以编程方式切换视图

    如何在 iPhone 应用程序中以编程方式更改屏幕视图 我已经能够创建导航视图并以编程方式推送 弹出它们以产生此行为 但如果我想简单地更改当前视图 不使用 UINavigation 控制器对象 那么实现此目的的最简洁方法是什么 一个简单的示
  • 如何让函数 [a] -> [a] 对 [(a,Int)] 进行操作?

    我发现自己经常按照以下模式编写代码 foo xs map snd filter lt 10 fst zip xs 0 bar ys map snd sortBy compare on fst zip ys 0 现在我想把它抽象出来 foo
  • Kubernetes:如何获取运行超过 3 天的命名空间?

    示例 我想获取所有运行超过 3 天的命名空间 我已经借助此命令按标签和创建时间戳对命名空间进行了排序 kubectl get 命名空间 l Provisioner foo sort by metadata creationTimestamp
  • 如何在不同的命名空间上使用 nginx 入口 TCP 服务[重复]

    这个问题在这里已经有答案了 我在 kubernetes 集群中部署了两个命名空间 命名空间 A 主机 mysql 和命名空间 B 运行 postgress 并在这些端口上公开其服务部署 Namespace A mysql port 3306
  • JScrollPane 垂直滚动条太宽

    我正在使用 Netbeans GUI Builder 创建 GUI 应用程序 因此生成的所有代码都是由 Netbeans 生成的 预览设计中的一切看起来都很好 但是当我运行应用程序时 JScrollPane 显示得很糟糕 如您所见 只有一半
  • 在VB6中将十六进制值转换为十进制值

    在VB6中如何将十六进制值转换为十进制值 我只是想看看这是否有效 Dim hexVal as string hexVal 7B19AB clng H hexVal 然而 我得到 类型不匹配 error 去掉 号 Dim hexVal as
  • CSS 中的美女图标形状

    如何仅在 CSS 中绘制此 Belle 图标形状 我已经尝试过方形元素上的边框半径 但没有得到确切的角 那么 为了达到准确的效果 即使我们使用百分比 我们也不能依赖单个元素border radius 因此 一种选择可能是使用两个彼此重叠的
  • D3 js图中相同颜色的箭头和链接

    我是 D3 的新手 一直在尝试使箭头的颜色与 D3 图中箭头的颜色相同 参考给出的代码解决方案here https stackoverflow com questions 32964457 match arrowhead color to
  • OpenAI API:尽管 GPT-3.5 模型可以工作,但为什么我无法通过 API 访问 GPT-4 模型?

    我可以使用 gpt 3 5 turbo 0301 模型访问 ChatGPT API 但不能使用任何 gpt 4 模型 这是我用来测试这个的代码 它不包括我的 openai API 密钥 代码按编写的方式运行 但是当我用 gpt 4 gpt
  • 如何与 Web XML/JSON API 交互?

    我正在自己学习 php xml json 和其他所有内容 并且我正在通过 API 来完成某些事情 他们有文档 但我仍然不明白 API 是如何工作的 他们给你一个 GET 链接和 API 密钥 我知道你应该将 API 密钥放在请求链接中 我如