PHP GET请求不起作用

时间:2012-08-24 16:19:08

标签: php xml curl get

当我在浏览器中输入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);

使用CURL

    // 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 =我在浏览器中粘贴的相同网址。哪里错了?请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:1)

有更多信息从浏览器传输到服务器而不仅仅是URI:

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

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

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

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

然后,您可以使用PHP's HTTP wrapper context optionsDocsCurl extension and it's endless array of optionsDocs轻松模仿请求,以达到您想要的效果。