我有一个简单的代码:
$t = file_get_contents("http://sub.example.com/list?u=test&passw=12345");
如果我打印结果,我得到"应用程序错误"文本。
我真的不明白为什么,如果我试着在浏览器上打开那个url,我可以看到它。
返回"application/json"数据
这是可能的,web应用程序在sub.example.com
期望一些额外的输入,除了什么进入URL(例如一个cookie),没有找到这个输入,并错误输出。
在任何情况下,可以肯定的是:(a)你的程序和(b)你的浏览器生成的HTTP请求不是相同的,否则应用程序在这两种情况下都会表现出相同的行为。
要调试它,您可以执行以下操作:
- 重写代码用
cURL
代替file_get_contents
,这样你就可以指定一个HTTP代理 - 安装Fiddler,一个很棒的HTTP调试代理
- 通过Fiddler 传递应用程序生成的HTTP请求和通过浏览器手动给出的HTTP请求
- 查找差异(您可以简单地对请求进行文本比较),这将引导您找到答案