我有一些应用程序应该连接到https站点,并接收一些。 有了连接,一切都还可以,但是当我知道getInputStream()时出现异常:
java.io.IOException:服务器返回HTTP响应代码:403为URL:
以下是代码的一部分:
String query = siteURL.toExternalForm();
URL queryURL = new URL(query);
String data = "username="+login+"&password="+password;
URLConnection connection = queryURL.openConnection();
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection
.getOutputStream());
writer.write(data);
writer.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
答案 0 :(得分:1)
看起来你不能做你想做的事,你得到的是HTTP 403: Forbidden。
您可以在浏览器中打开相同的网址吗?
答案 1 :(得分:1)
我认为该网站有自定义身份验证机制,您必须提供我们的用户名和密码作为GET参数。所以你的网址应该是这样的:
URL url = new URL("http://somesite.org/page?username=<username>&password=password");
... = url.openConnection();
...
如果使用url.openConnection,则会执行HTTP GET请求。如果要使用请求发送数据,则必须使用HTTP POST请求。在这种情况下,您可以使用第三方库,如Apache Commons HttpClient。
BTW:为什么你要创建一个新的URL对象,如果你已经有了一个?