2016-04-28 55 views
0

我正在尝试检查互联网连接是否可以在Android设备上使用,但是我的互联网连接需要代理才能连接到互联网。检查互联网连接是否可通过代理服务器

这是我的代码:

URL myurl = new URL("http://www.google.com"); 
HttpURLConnection connection; 
InetSocketAddress proxyInet = new InetSocketAddress(session.getUrlProxy(),session.getPortProxy()); 
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyInet); 
connection = (HttpURLConnection)myurl.openConnection(proxy); 
connection.setConnectTimeout(2000); 
connection.setReadTimeout(2000); 
int responseCode = -1; 
responseCode = connection.getResponseCode(); 
       if (responseCode == HttpURLConnection.HTTP_OK) { 
         connected= true; 
         connection.disconnect(); 
       } 
       else { 
        connection.disconnect(); 
       } 

此代码返回此异常的消息:

java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer) 
04-28 09:33:38.115 25512-25672/com.asde.minimental W/System.err:  at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:545) 
04-28 09:33:38.119 25512-25672/com.asde.minimental W/System.err:  at libcore.io.IoBridge.recvfrom(IoBridge.java:509) 
04-28 09:33:38.122 25512-25672/com.asde.minimental W/System.err:  at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488) 
04-28 09:33:38.122 25512-25672/com.asde.minimental W/System.err:  at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 
04-28 09:33:38.125 25512-25672/com.asde.minimental W/System.err:  at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 
04-28 09:33:38.129 25512-25672/com.asde.minimental W/System.err:  at java.io.InputStream.read(InputStream.java:163) 
04-28 09:33:38.135 25512-25672/com.asde.minimental W/System.err:  at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142) 
04-28 09:33:38.139 25512-25672/com.asde.minimental W/System.err:  at java.io.BufferedInputStream.read(BufferedInputStream.java:227) 
04-28 09:33:38.142 25512-25672/com.asde.minimental W/System.err:  at libcore.io.Streams.readAsciiLine(Streams.java:201) 
04-28 09:33:38.145 25512-25672/com.asde.minimental W/System.err:  at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:560) 
04-28 09:33:38.149 25512-25672/com.asde.minimental W/System.err:  at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:813) 
04-28 09:33:38.149 25512-25672/com.asde.minimental W/System.err:  at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274) 
04-28 09:33:38.149 25512-25672/com.asde.minimental W/System.err:  at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486) 
04-28 09:33:38.152 25512-25672/com.asde.minimental W/System.err:  at com.asde.minimental.utilities.Utils.isInternetConn(Utils.java:283) 
04-28 09:33:38.152 25512-25672/com.asde.minimental W/System.err:  at com.asde.minimental.net.AsyncUpdater.doInBackground(AsyncUpdater.java:58) 
04-28 09:33:38.155 25512-25672/com.asde.minimental W/System.err:  at com.asde.minimental.net.AsyncUpdater.doInBackground(AsyncUpdater.java:30) 
04-28 09:33:38.155 25512-25672/com.asde.minimental W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
04-28 09:33:38.159 25512-25672/com.asde.minimental W/System.err:  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
04-28 09:33:38.162 25512-25672/com.asde.minimental W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
04-28 09:33:38.165 25512-25672/com.asde.minimental W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
04-28 09:33:38.165 25512-25672/com.asde.minimental W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
04-28 09:33:38.169 25512-25672/com.asde.minimental W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
04-28 09:33:38.175 25512-25672/com.asde.minimental W/System.err:  at java.lang.Thread.run(Thread.java:856) 
04-28 09:33:38.179 25512-25672/com.asde.minimental W/System.err: Caused by: libcore.io.ErrnoException: recvfrom failed: ECONNRESET (Connection reset by peer) 
04-28 09:33:38.182 25512-25672/com.asde.minimental W/System.err:  at libcore.io.Posix.recvfromBytes(Native Method) 
04-28 09:33:38.185 25512-25672/com.asde.minimental W/System.err:  at libcore.io.Posix.recvfrom(Posix.java:132) 
04-28 09:33:38.185 25512-25672/com.asde.minimental W/System.err:  at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164) 
04-28 09:33:38.185 25512-25672/com.asde.minimental W/System.err:  at libcore.io.IoBridge.recvfrom(IoBridge.java:506) 
04-28 09:33:38.185 25512-25672/com.asde.minimental W/System.err: ... 21 more 

此代码,而无需代理运行正常

connection = (HttpURLConnection)myurl.openConnection(); 

什么是错的?

感谢

EDIT1:如果我尝试用https://stackoverflow.com/它工作正常。这个问题似乎是与在达到要求

回答

0

如果你不把这个权限谷歌的服务器,把它写上的AndroidManifest.xml中

<uses-permission android:name="android.permission.INTERNET" />

后顶部(或如果它已经把),连接您的HttpURLConnection的

connection.setRequestProperty("connection", "close"); 
+1

连接之前=(HttpURLConnection类)myurl.openConnection(代理)之前设置该属性; ? – Hanzo

+0

是的,先生!如果它不工作,阅读这篇文章,教程使用java.net.URLConnection和Http请求http://stackoverflow.com/questions/2793150/using-java-net-urlconnection-to-fire-and-handle -http-requests –

+0

我在'connection.connect()'之前添加了'connection.setRequestProperty(“connection”,“close”);'并且问题是一样的。该异常由'connection.getResponseCode();'启动。当我尝试使用这种方法对我自己的服务器(自己的Web)执行“POST”请求时,它可以工作。任何想法? – Hanzo