当我在浏览器中输入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
=我在浏览器中粘贴的相同网址。哪里错了?请帮帮我。谢谢。答案 0 :(得分:1)
有更多信息从浏览器传输到服务器而不仅仅是URI:
http://rest.example.com/account/get-balance/27e3xxx/7vvU4c95trfxxxx
只传递URI但不传递从浏览器传递的其他信息,通常可以获得不同的结果。在你的情况下,很明显你会得到不同的结果。
了解在使用浏览器请求URI时传递给服务器的其他信息。这个其他信息称为请求行,请求标头和正文。在GET请求中,请求正文通常为空,因此您只需要专注于请求行和标题,请参阅:
如果所谓的网络工具能够显示整个请求信息以进行调试,请联系浏览器的技术文档(例如Chromium有这个,对于Firefox,有Firebug扩展,有它)。
然后,您可以使用PHP's HTTP wrapper context optionsDocs或Curl extension and it's endless array of optionsDocs轻松模仿请求,以达到您想要的效果。