android 连接超时弹窗,Android java.net.SocketTimeoutException:连接超时

最近,我在程序中遇到以下错误:

11-18 12:30:30.259: W/System.err(21368): java.net.SocketTimeoutException: Connection timed out

11-18 12:30:30.259: W/System.err(21368): at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)

11-18 12:30:30.259: W/System.err(21368): at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)

11-18 12:30:30.259: W/System.err(21368): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204)

11-18 12:30:30.259: W/System.err(21368): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)

11-18 12:30:30.259: W/System.err(21368): at java.net.Socket.connect(Socket.java:1002)

11-18 12:30:30.259: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:75)

11-18 12:30:30.259: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:48)

11-18 12:30:30.269: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:322)

11-18 12:30:30.269: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)

11-18 12:30:30.269: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285)

11-18 12:30:30.269: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267)

11-18 12:30:30.269: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205)

11-18 12:30:30.269: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:614)

11-18 12:30:30.269: W/System.err(21368): at com.example.simplevider.SimpleVideo$4.run(SimpleVideo.java:122)

11-18 12:30:30.279: W/System.err(21368): at java.lang.Thread.run(Thread.java:1019)

产生此错误的函数如下:

private void sendStuff() {

Log.e("sendStuff", "======================================");

new Thread(new Runnable() {

@Override

public void run() {

final int BUFFER_SIZE = 4096;

try {

File uploadFile = new File(existingFileName);

System.out.println("File to upload: " + existingFileName);

URL url = new URL(URL);

HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

httpConn.setUseCaches(false);

httpConn.setDoOutput(true);

httpConn.setRequestMethod("POST");

httpConn.setReadTimeout(60*1000);

httpConn.setConnectTimeout(60 * 1000);

// sets file name as a HTTP header

httpConn.setRequestProperty("fileName", uploadFile.getName());

httpConn.setRequestProperty("extra-id", uploadFile.getAbsoluteFile().toString());

httpConn.setRequestProperty("extra-id2", uploadFile.getParent());

httpConn.setRequestProperty("extra-id3", uploadFile.length() + "");

OutputStream outputStream = httpConn.getOutputStream(); //<< this is the source of the error

FileInputStream inputStream = new FileInputStream(uploadFile);

byte[] buffer = new byte[BUFFER_SIZE];

int bytesRead = -1;

System.out.println("Start writing data...");

while ((bytesRead = inputStream.read(buffer)) != -1) {

outputStream.write(buffer, 0, bytesRead);

}

System.out.println("Data was written.");

outputStream.close();

inputStream.close();

// always check HTTP response code from server

int responseCode = httpConn.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) {

// reads server's response

BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));

String response = reader.readLine();

System.out.println("Server's response: " + response);

} else {

System.out.println("Server returned non-OK code: " + responseCode);

}

} catch (Exception e) {

e.printStackTrace();

sendStuff();

}

}

}).start();

}

此函数在正常的JAVA中可以正常使用,但是当复制到Android时,它会抛出java.net.SocketTimeoutException:连接超时,我不知道为什么.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值