Android-java.net.SocketTimeoutException: Zeitüberschreitung der Verbindung
Seit kurzem habe ich folgende Fehler in meinem Programm:
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.<init>(HttpConnection.java:75)
11-18 12:30:30.259: W/System.err(21368): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(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)
Die Funktion, die erstellt diese Fehlermeldung lautet wie folgt :
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();
}
Diese Funktion ist tadellos arbeiten in normalen JAVA aber beim kopieren in Android wirft java.net.SocketTimeoutException: Connection timed out
und ich weiß nicht, warum.
InformationsquelleAutor user2424947 | 2013-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Möglichkeiten,
1)haben Sie überprüft, getestet und Ihre Verbindung.
2)besser setzen Sie keine Verbindungs-Timeouts,wenn Sie die Einstellung gewählt haben maximale Zeit,bcos es wirft einen Fehler,wenn der server nicht Antwort innerhalb der vorgegebenen Zeit..
Können Sie uns erklären, welche Probleme und wie Sie behoben test-server?
Ich habe nicht den timeout der Verbindung, noch wirft es SocketTimeOutException.
InformationsquelleAutor Navin Kumar
Können Sie diese code-snippet für die Ausnahme haldling:
InformationsquelleAutor Chitransh Mathur
diese Art von Ausnahme kann auch auftreten, wenn eine firewall blockiert die http-oder https-service
und unblock, springen
firewall->erweiterte Einstellungen -> und überprüfen Sie die http-oder https-Optionen und speichern Siegeben Sie eine Bild-Beschreibung hier
InformationsquelleAutor Aakib Jabbar