PHP GET请求不起作用


PHP GET Request not working

当我在浏览器中键入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=我在浏览器中粘贴的相同URL。我哪里错了?请帮我一下。谢谢

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

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

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

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

  • 5请求-超文本传输协议的一部分——HTTP/1.1 RFC 2616 Fielding等人

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

然后,您可以使用PHP的HTTP包装器上下文选项Docs或Curl扩展轻松地模拟请求,它有无数的选项Docs来实现您想要的。