2014-01-15 16 views
2

我有一个Android客户端向服务器发出HTTPS请求。防火墙日志具有不需要的CONNECT请求方法的条目。如何防止来自HttpsURLConnection的CONNECT方法调用

CONNECT请求何时发送出去,我怎样才能防止它被发送?我希望只有一个GET请求。我的理解是,对openConnection()的调用实际上不会发出请求,并且GET请求会继续调用getResponseMessage()。

如何禁用http客户端尝试建立代理服务器隧道?

这里是我送我的连接和拨打电话:

URL url = new URL("https://some.server.com"); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
connection.setConnectTimeout(CONNECT_TIMEOUT); 
connection.setReadTimeout(REAT_TIMEOUT); 
connection.setRequestProperty(ACCEPT_CHARSET, UTF8_CHARSET); 
connection.setRequestProperty(CONTENT_TYPE_HEADER, contentType); 
setCustomRequestProperties(connection); 
connection.setRequestMethod("GET"); 

//create response 
connection.getResponseMessage(); 
connection.getResponseCode(); 
connection.getContentType(); 
connection.getContent(); 

编辑:

这里是我试图阻止防火墙日志条目:

CONNECT someURL.domain.com:443 HTTP/1.1 
Host: someURL.domain.com 
User-Agent: CustomUserAgent;1.0.0(Android 4.3;Nexus 4;T-Mobile) 
Proxy-Connection: Keep-Alive 
X-SSL-Secure: true 
X-CS-Source-IP: 10.3.3.3 
X-Forwarded-For: 10.3.3.3 

我认为这是代理相关的,因为“代理连接”标头

回答

2

URLConnection的默认值是汇集TCP(套接字)连接。看起来“代理连接”头是误导性的,因为当“连接”是真正意图时,头可能被盗用。

当我设置系统属性

System.setProperty("http.keepAlive", "false"); 

禁用连接池,CONNECT方法请求项就走了。

由于需要为每个请求创建套接字,但应用程序不会发出大量请求,所以这是可以接受的。

1

这只发生当你有一个HTTP代理配置。可能你已经设置了系统属性http.proxyHosthttp.proxyPort,,或者Android有另一种配置方式。

相关问题