【发布时间】:2012-09-28 19:24:57
【问题描述】:
在下面的片段中,您可以看到我正在尝试通过其 API 以 JSON 格式从网站下载一些数据。
我的问题是,当我尝试获取 json 格式的数据(25 mb 的文本数据)时,php 脚本会向我发送 200 响应(您可以在下面看到)。但奇怪的是脚本实际上完成了执行,并且响应被我的浏览器下载为一个文件。
如果输入到浏览器中的 url 会返回正确的数据,即使通过 wget 我也可以从该 url 下载内容。
难道 curl 会通过响应从服务器传递到我的浏览器吗?
$ch = curl_init("https://example.com/api/json/view/view_name?authtoken=xxxyyyaaaa&raw=true");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec ($ch);
下载的文件“myscriptname.php”包含:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
</body></html>
【问题讨论】:
-
您尝试过更改用户代理吗?
-
服务器忽略用户代理,数据已下载,但在下载之前,我的浏览器下载了 html 响应并认为一切都已完成
-
也许你可以摆弄一下
AcceptHTTP 标头,看看是否有任何改变。