1

当我http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx在浏览器中输入并回车时,我得到以下 XML 响应。

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<accountBalance>
    <creditLimit>0.0</creditLimit>
    <quotaEnabled>true</quotaEnabled>
    <value>2.0</value>
</accountBalance>

但是当我在 PHP 中尝试相同的 URL 时,它会发送未找到的响应页面(哎呀!那个页面不存在。)。以下是我尝试的几种方法...

使用 SimpleXML

$content = simplexml_load_file($this->request_uri);

使用文件方法

$content = file_get_contents($this->request_uri);

使用卷曲

    // create a new cURL resource
    $ch = curl_init();

    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, $this->request_uri);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_HEADER, 0);

    // grab URL and pass it to the browser
    $content = curl_exec($ch);

    // close cURL resource, and free up system resources
    curl_close($ch);
  • $this->request_uri= 我在浏览器中粘贴的相同 URL。我哪里错了?请帮助我。谢谢你。
4

1 回答 1

1

从浏览器传输到服务器的信息不仅仅是 URI:

http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx

通过只传递URI而不传递从浏览器传递的其他信息,您可以正常得到不同的结果。在您的情况下,很明显您会得到不同的结果。

了解当您使用浏览器请求该 URI 时传递给服务器的其他信息。其他信息称为请求行、请求标头和正文。在 GET 请求中,请求正文通常为空,因此您只需关注请求行和标头,请参阅:

如果您的浏览器具有能够显示整个请求信息以进行调试的所谓网络工具 ,请联系您的浏览器的技术文档(例如,Chromium 有这个,对于 Firefox 有它的 Firebug 扩展)。

然后,您可以使用PHP 的 HTTP 包装器上下文选项DocsCurl 扩展轻松模仿请求,它是无穷无尽的选项Docs数组来实现您想要的。

于 2012-08-24T16:31:03.013 回答