为什么file_get_contents()返回“应用程序错误”?


Why file_get_contents() returns "Application Error"?

我有一个简单的代码:

$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请求
  • 查找差异(您可以简单地对请求进行文本比较),这将引导您找到答案