【发布时间】:2012-08-29 05:18:55
【问题描述】:
我正在为在 Brightcove 视频云上托管视频的网站创建视频站点地图。为了从网站上获取所有视频信息,Brightcove 建议从以下表单的 url 中读取响应
http://api.brightcove.com/services/library?token="+accountToken+"&page_size=1&command=find_all_videos&output=JSON&get_item_count=true
url 的输出是 JSON,其中accountToken 只是帐户的标识符。
当我在浏览器中使用 Token 访问上述 url 时,它给了我正确的响应。
我在下面写了程序 sn-p 来读取那个 url
URL jsonURL = new URL("http://api.brightcove.com/services/library?token="+accountToken+"&page_size=1&command=find_all_videos&output=JSON&get_item_count=true");
HttpURLConnection connection = (HttpURLConnection) jsonURL.openConnection();
connection.setRequestMethod("GET");
connection.connect();
BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String lineRead = "";
while (reader.ready()) {
lineRead = lineRead + reader.readLine();
}
由于我的浏览器使用代理,我添加了以下代码以包含代理设置
System.setProperty("http.proxyHost", "my.proxyurl.com");
System.setProperty("http.proxyPort", "80");
不使用代理设置,它返回java.net.ConnectException: Connection refused: connect,使用代理它给我java.io.IOException: Server returned HTTP response code: 503
所以我的问题是,为什么它给我一个 503(服务不可用)错误?从浏览器看它工作正常。
更新 1: 这似乎是网络的问题。我 ping 了域,它说“请求超时”。虽然通过 HTTP 工作。看起来是防火墙的问题。
【问题讨论】:
-
@jtahlborn:反向代理。你在什么背景下问这个?
-
能否提供临时测试账号Token?
-
可能是袜子代理吗?其他类型的代理?
-
另外,我会尝试使用像 Wireshark 这样的工具来查看传入和传出的 HTTP 消息——也许它们甚至没有到达代理,或者没有通过它的身份验证等
-
我已经尝试了您的代码(我也是代理后面的)并且它工作正常,考虑到 Jamshid 的回答中的这两行。再次检查您是否输入了正确的地址和端口,以及您的代理是否已正确配置、没有安全限制等。
标签: java http-status-code-503 brightcove