I'm trying to get the data the server sends when i connect to it,
HttpURLConnection con = (HttpURLConnection) new URL("http://myurl.com:443").openConnection();
con.setRequestMethod("CONNECT");
BufferedReader reader;
if(con.getResponseCode() >= 100 && con.getResponseCode() < 400) {
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
}else {
reader = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
String line;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
but i get the error
Invalid HTTP method: CONNECT
Why can't I use CONNECT
as a RequestMethod?
From the doc HttpURLConnection.setRequestMethod :
setRequestMethod
public void setRequestMethod(String method) throws ProtocolException
Set the method for the URL request, one of:
GET
POST
HEAD
OPTIONS
PUT
DELETE
TRACE
are legal, subject to protocol restrictions. The default method is GET.
Parameters:
method - the HTTP method
Throws:
ProtocolException - if the method cannot be reset or if the requested method isn't valid for HTTP.
SecurityException - if a security manager is set and the method is "TRACE", but the "allowHttpTrace" NetPermission is not granted.
See Also:
getRequestMethod()
AS per java doc you can only set GET POST HEAD OPTIONS PUT DELETE TRACE
as request method. Connect
is not a valid request method.