Ich habe einige IPv6-only-Hosts. Ich kann erfolgreich curl Anfrage an sie vonIch kann keine Verbindung zu IPv6-only-Host von Java
$ curl -I my.ip.v6.only.host
HTTP/1.1 200 OK
curl auszuführen Aber wenn ich es von Java zu erhalten versuchen, habe ich einen Fehler:
HttpGet httpget = new HttpGet("http://my.ip.v6.only.host");
CloseableHttpResponse response = httpclient.execute(httpget);
Stapelüberwachung:
INFO: I/O exception (java.net.NoRouteToHostException) caught when processing request to {}->http://my.ip.v6.only.host: No route to host
Mar 17, 2015 7:42:23 PM org.apache.http.impl.execchain.RetryExec execute
INFO: Retrying request to {}->http://my.ip.v6.only.host
java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:72)
at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:123)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at MainTest.main(MainTest.java:25)
Problem ist auf Java v1.7.0_65 und v1.8.0_40, MacOS 10.10.2 aufgetreten. Bei der Vorgängerversion MacOS 10.9.5 funktioniert es gut.
Was ist los? Wie es möglich ist, dass der Host von curl
erreichbar und von Java nicht erreichbar ist.
Auch habe ich versucht, um -Djava.net.preferIPv6Addresses=true
und -Djava.net.preferIPv4Stack=false
zu spielen und es konnte nicht helfen.
UPD fand einen ähnlichen Fehler in OpenJDK, JDK-8015415
UPD 2, wenn ich anstelle von Wi-Fi Kabelverbindung zu nutzen versucht, es mir geholfen. Seltsam.
Welche Version von Apache Http Client verwenden Sie? – Martijn
org.apache.httpcomponents: httpclient: 4.3.5 –
Erprobte normale Java NIO-Anfragen noch? Ich kann nicht scheinen, dieses Problem auf einer Linux-Box atm neu zu erstellen. – Martijn