如何与 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 交互? 的相关文章

  • XML/XSD 智能感知在 Visual Studio 2010 中不起作用

    我正在 VS 2010 中处理 xml 和 xsd 文件 但智能感知不起作用 然而 Intellisense 在 VS 2008 中处理相同的文件 当我输入 我缺少的 VS 2008 和 VS 2010 之间有什么区别吗 我将 xsd 文件
  • 在 Ruby/Sinatra 中解码 Facebook 的签名请求

    由于 Facebook 不赞成使用新的 FBML 我正在寻找一种新方法来创建 显示 选项卡 向粉丝显示一个版本 向非粉丝显示另一个版本的页面选项卡 Facebook 已将数据添加到signed request 中 当用户在应用程序中选择您的
  • 如何使用 PHP preg_replace 链接 Twitter 用户名?

    我想搜索我的 Twitter 状态对象的文本属性并将 username 替换为 a href username a 到目前为止我尝试过的看起来像这样 pattern 1 a zA Z0 9 replace a href 1 2 a new
  • 如何设置 Visual Studio XML 文档的格式以在 Web 上显示

    我正在使用 Visual Studio 2010 并开始做一个好孩子 并通过 XML 注释记录我编写的所有代码 我有一个记录良好的项目 我什至想出了如何让 Visual Studio 在构建时输出完整的 XML 文档 我的问题是 在网络上格
  • 如何在c# wpf中获取元素的标签?

    我正在尝试使用 WPF 构建一个 GUI 在其中我可以绘制一些基本形状并将它们存储到 xml 文件中 形状是在 xaml 文件中设计的 我为每个形状添加了标签 现在我想在代码中获取它们的标签值 并将其作为属性存储在输出 xml 文件中 例如
  • php - 每月最后一天从公历到波斯日期时间的错误转换

    我想将公历日期时间转换为波斯日期时间 这是我的代码 public function convertToJalali DateTime gregorianDateTime if gregorianDateTime gt year lt 1 g
  • PHPUnit - 使用配置文件时“未执行测试”

    问题 为了提高代码质量 我决定尝试学习如何使用单元测试来测试我的代码 而不是使用平庸的最佳测试解决方案 我决定使用 Composer 安装 PHPUnit 作为个人库 它可以让我实现常见的数据库功能 起初我没有 PHPUnit 的配置文件
  • Groovy:验证 JSON 字符串

    我需要检查 Groovy 中的字符串是否为有效的 JSON 我的第一个想法就是把它发送出去new JsonSlurper parseText myString 并且 如果没有例外 就假设它是正确的 然而 我发现 Groovy 很乐意接受尾随
  • 从 WHMCS 获取 pdf 发票?

    对于一个小型副项目 我必须创建一个通过 WHMCS 获取 PDF 的调用 我看到 API 可以获取变量 例如数量 发票项目等 但我想要与客户下订单时系统发送的 PDF 相同的 PDF 我有一个 PHP 应用程序 UPDATE 遵循下面的很棒
  • PHP rand() ...获得真正的 50/50 结果?

    我想要运行一个具有 2 个不同结果的函数 但我希望每个结果都真正达到 50 我假设 rand 0 1 是可行的方法 但我很好奇这是否可能有利于其中一个 获得 50 50 结果的最佳方法是什么 Thanks 编辑 谢谢大家 但我不希望它是随机
  • 使用 WAMP 在浏览器中显示为注释的 PHP 代码 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 正如标题中所述 我的 PHP 代码显示在浏览器代码检查器中 就像被注释掉一样 例如
  • 在cakephp 3中动态更改数据库连接

    我正在尝试更改中使用的数据库连接蛋糕php 3在飞行中 我找到的这个问题的每个答案都指的是蛋糕PHP 2 These https stackoverflow com questions 27655613 multiple databases
  • PHP Socket Java 消息交换

    我正在尝试在 PHP 页面和正在运行的 Java 服务器之间进行通信 只是通过套接字进行简单的字符串交换 这是我处理连接的线程的 Java 代码 InputStream in clientSocket getInputStream Buff
  • 在从表单发布到其他人的脚本之前如何执行 php?

    我有一个联系表格 可以发布到 mailchimp 但在某些情况下 我也希望它发送一封电子邮件 我考虑过改变
  • MySQL 错误:列“时间”不能为空

    我收到错误 使用下面的查询时 列 时间 不能为空 第一次没有重复时工作正常 但当尝试再次更新时 我收到错误 列 时间 不能为空 mysql query INSERT INTO table Username Time Videos Credi
  • 合并多维数组并对在另一列中共享公共值的列值求和

    我有 3 个数组用于存储帖子 评论和点赞 这些是 JSON 字符串 comments JSON 存储用户和评论点 comments user 5 points 12 user 2 points 1 user 3 points 1 likes
  • 如何将数组内部指针设置到特定位置? PHP/XML

    我正在尝试使用 XML 而不是数据库来构建一个小网站 我想构建一个下一个和上一个按钮 该按钮将与我显示的内容相关 我找到了 php 函数 next 和 prev 以及 current 但我不知道如何将指针设置到特定位置以便能够相对于当前页面
  • 如果 package.json 中的脚本抛出错误,如何定义自定义 console.log?

    如果我的自定义 npm 脚本抛出错误 是否可以添加自定义 console log 或者是否可以将自定义 console log 添加到脚本中 我的脚本对象中有此条目包 json check npm list depth 0 grep 并且需
  • Doctrine 原始 sql 和准备好的语句

    我有一个使用准备好的语句的 Doctrine RawSql 查询 然而 当生成 SQL 查询时 它们似乎被忽略 但是如果我遗漏了标记值 我会得到一个关于绑定变量数量不匹配的异常 因此它至少尝试将它们分入 如果我内联包含这些值 Doctrin
  • 如何在 PHP 中对数组和数据进行排序?

    这个问题旨在作为有关 PHP 中数组排序问题的参考 人们很容易认为您的特定案例是独特的并且值得提出新问题 但大多数实际上只是此页面上的解决方案之一的微小变化 如果您的问题因与此问题重复而被关闭 请仅在您能解释为什么它与以下所有问题显着不同的

随机推荐

  • 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 密钥放在请求链接中 我如