【问题标题】:Using http_get php使用 http_get php
【发布时间】:2013-07-01 19:00:53
【问题描述】:

在使用某个 API 来提取信息时,文档建议我需要传递一个 URL 来检索数据。数据以XML 返回,但要以JSON 格式接收,应指定'application/json' 的HTTP Accept 标头值。

我正在尝试在 PHP 中实现这一点,例如检索信息的 URL 是 http://www.example.com?someContent,它以 XML 格式返回数据。

我目前正在使用 PHP 中的 http_get 函数,但是它似乎根本不起作用。

关于如何提取信息并以JSON 格式请求信息的任何建议。

【问题讨论】:

  • 你确定你安装了 http pecl 扩展? (http_get 方法包含在那个包中)php.net/manual/en/http.install.php
  • @pozs,我不确定,因为我是直接从 MAMP 使用它
  • 那么,你不是。没有它就行不通。按照上面我链接的页面的说明进行操作。

标签: php http get


【解决方案1】:

未经测试,但这应该可以。将 headers 选项设置为要使用的标题数组。

$response = http_get("http://www.example.com/?someContent", array(
  'headers' => array(
    'Accept' => 'application/json'
  )
), $info);

print_r($info);

http://php.net/manual/en/function.http-get.php

【讨论】:

  • 由于某种原因,这似乎根本不起作用(停止页面加载任何内容),我认为可能是一些语法错误,但我找不到。
  • 应该将'Accept': 'application/json' 改为'Content-type: application/json' 吗?
  • @Namit,不,Content-Type 是响应标头。 Accept 是请求标头,告诉服务器您将接受哪些内容类型。打开您的错误日志以查看发生了什么。您的服务器可能不允许连接到外部。
  • 这就是它所说的:解析错误,期望 ')'' 与 'Accept' : ... 一致
  • 糟糕,抱歉,语言错误。 : 应该改为 =>。固定。
【解决方案2】:

尝试:$body = http_parse_message(http_get($url))->body; 然后你可以使用$body

或者,您可以使用 cURL。由于结果是 JSON,因此您需要解析 XML,然后将其作为数组输出到 json_encode 函数中。

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 2015-11-27
    • 2022-06-15
    • 2014-01-18
    • 2015-02-28
    • 1970-01-01
    相关资源
    最近更新 更多