【问题标题】:What's the common practice to invoke a JSON call in PHP?在 PHP 中调用 JSON 调用的常见做法是什么?
【发布时间】:2012-10-04 18:31:24
【问题描述】:

我正在尝试创建一个 JSON 调用库。它具有以下特点。

  • 能够自定义标题
  • 能够 POST 任何数据到服务器(包括表单编码 (a=1&b=2&c=3) 和 JSON 数据块)
  • 解析响应并作为 JSON 对象返回

我在其他问题中搜索,发现只有两个答案。

  • 使用file_get_contents()。这种方式非常简单易用;但是,除了获取内容之外,您无能为力——您无法添加标题,无法使用 POST。但通常所有服务器都支持它。
  • 使用卷曲。这种方式看起来很强大,你几乎可以用它做任何事情。缺点是你必须在你的服务器上安装 libcurl 和 php-curl 支持,这意味着你不能在没有安装 curl 的服务器上使用它。

那么,如果我想开发一个可以在大多数服务器上使用的通用库,curl 是一个不错的选择吗?

还有其他方法吗?


简而言之,我正在寻找 Python 中 urllib2 的 PHP 版本 - 易于使用、功能强大且可靠。

【问题讨论】:

  • curl 是一个不错的选择。它安装非常广泛,并且经常作为托管或托管系统的可选安装提供。
  • 谢谢迈克尔。我仍然记得那些痛苦的日子,当时我发现我的托管服务提供商没有在我的虚拟服务器上安装 curl。所以我不太确定 curl 是否被广泛安装......
  • 可以将标题添加到file_get_contents,但更倾向于使用 cURL,更多信息:stackoverflow.com/questions/2107759/…
  • 感谢@BurningtheCodeigniter。我不知道file_get_contents 可以这样使用。但是,正如您所说,cURL 看起来要好得多。
  • 您也可以发布 - 请参阅 stackoverflow.com/questions/2445276/…

标签: php json rpc


【解决方案1】:

您有两个选择:curlHTTP stream context options。两者都可以完成您所描述的; curl 可能不会随处安装,而流上下文是核心功能并且始终可用。

实际上,您也可以使用sockets 来实现您的库,这会做更多的工作,但如果您需要对您的请求做更奇怪的事情,可能会让您有更大的控制权。

【讨论】:

  • 除非万不得已,否则我不建议使用套接字,因为 HTTP 协议有很多细节(例如分块编码、重定向),而且你必须重新发明很多轮子.
【解决方案2】:

据我所知,curl 主要包含在许多服务器上,因为它原生支持 4.0.2 PHP 版本。 还有一个原生 php 函数header,它通过简单地使用这样的自定义响应的标题 - > header('location: index.php')header('cache-control: ok') 等等。您可以在php.net查看网络功能部分

【讨论】:

  • 谢谢。看来 curl 是个不错的选择。 header() 与我无关,因为我想从其他服务器获取内容,但不想将内容提供给其他人。
猜你喜欢
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2013-10-17
  • 2011-07-16
  • 1970-01-01
相关资源
最近更新 更多