当我在浏览器中键入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来实现您想要的。