Apache HttpComponents: org.apache.http.client.ClientProtocolException
Also benutze ich Apache HttpComponents, um http-Anfragen in Java zu bearbeiten. Jetzt möchte ich die wiederverwendenDefaultHttpClient
, was nach diesem Beispiel möglich sein soll:http://wiki.apache.org/HttpComponents/QuickStart. Das Beispiel selbst gibt einen ssl-Fehler aus, so dass ich ihn ein wenig geändert und vereinfacht habe. Jetzt bekomme ich immer eineorg.apache.http.client.ClientProtocolException
Hier ist mein Beispielprogramm, im Grunde fordere ich nur 2 Webseiten an, die dasselbe verwendenDefaultHttpClient
.
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class ClientFormLogin {
public static void main(String[] args) throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
//Handle first request.
HttpGet httpget = new HttpGet("http://tweakers.net/nieuws/82969/amazon-nederland-opent-digitale-deuren-in-september.html");
HttpResponse response = httpclient.execute(httpget);
System.out.println("Execute finished");
HttpEntity entity = response.getEntity();
String page = readInput(entity.getContent());
System.out.println("Request one finished without problems!");
//Handle second request
HttpGet httpost = new HttpGet("http://gathering.tweakers.net/forum/list_messages/1506977/last");
response = httpclient.execute(httpost);
entity = response.getEntity();
page = readInput(entity.getContent());
System.out.println("Request two finished without problems!");
}
private static String readInput(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte bytes[] = new byte[1024];
int n = in.read(bytes);
while (n != -1) {
out.write(bytes, 0, n);
n = in.read(bytes);
}
return new String(out.toString());
}
}
Beim Ausführen meines Beispiels erhalte ich den folgenden Fehler
Request one finished without problems!
Exception in thread "main" org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:909)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at ClientFormLogin.main(ClientFormLogin.java:29)
Caused by: org.apache.http.HttpException: Unable to establish route: planned = {}->http://gathering.tweakers.net; current = {}->http://tweakers.net
at org.apache.http.impl.client.DefaultRequestDirector.establishRoute(DefaultRequestDirector.java:842)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
... 3 more
Jeder kann mir einige Hinweise geben, wie ich dieses Problem lösen kann, außer einen neuenDefaultHttpClient
für jede anfrage.
Bearbeiten
Ich habe gerade herausgefunden, ob ich auf derselben Domain bleibe, bei der ich keine Probleme habe.
page1: 'http://tweakers.net/nieuws/82969/amazon-nederland-opent-digitale-deuren-in-september.html'
page2: 'http://tweakers.net/nieuws/82973/website-nujij-belandt-op-zwarte-lijst-google-door-malware.html'
Ich habe keine Probleme, wenn ich:
page1: 'http://tweakers.net/nieuws/82969/amazon-nederland-opent-digitale-deuren-in-september.html'
page2: 'http://gathering.tweakers.net/forum/list_messages/1506076/last'
Ich bekomme den Fehler.
Ofc Ich sehe dies eine Minute nach dem Posten meiner Frage. Außer wenn mir jemand sagen kann, wie ich mit der gleichen Domain 2 sperate Domains erstellen kannDefaultHttpClient
meine frage ist schon beantwortet