httpGet >> Ein Teil der Anfrage ist ungültig

N

NLG

Gast
Hey,

ich versuche mit dem httpClient den Inhalt einer Webseite abzurufen. Mein bisheriger Code sieht so aus:

Java:
public static void main(String[] args) {
		 
		HttpClient httpclient = new DefaultHttpClient();
	        try {
	            Authenticator.setDefault(new ProxyAuthenticator("username", "password,"));
	  
	            HttpGet httpget = new HttpGet("http://www.google.de/");

	            HttpHost proxy = new HttpHost("proxyname", port);

	            // handling response
	            HttpResponse response = httpclient.execute(proxy, httpget);
	            HttpEntity entity = response.getEntity();

	            System.out.println("----------------------------------------");
	            System.out.println(entity);
	            System.out.println("----------------------------------------");
	            
	            File outFile = new File("file.txt");
	            
	            OutputStream out = new FileOutputStream(outFile);
	            
//	            entity.writeTo(out);
	            InputStream is = entity.getContent();
	            int n;
	            
	            byte[] buffer = new byte[2048];
	            while((n = is.read(buffer)) != -1) {
	            	out.write(buffer);
	            }
	            
	            
	        } finally {
	            // When HttpClient instance is no longer needed,
	            // shut down the connection manager to ensure
	            // immediate deallocation of all system resources
	            httpclient.getConnectionManager().shutdown();
	        }
	}
}


ich bekomme dann allerdings immer folgendes:

<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
<HEAD> inhalt hab ich gelöscht
</HEAD><BODY>
<H1>FEHLER</H1>
<H2>Der angeforderte URL konnte nicht geholt werden</H2>
<HR noshade size="1px">
<P>
W&auml;hrend des Versuches, die Anfrage
<PRE>
GET / HTTP/1.1
:
Host: proxyname:port
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.3 (java 1.5)

</PRE>
zu verarbeiten, trat der folgende Fehler auf:
<UL>
<LI>
<STRONG>Ung&uuml;ltige Anfrage</STRONG>
</UL>

<P>
Ein Teil der HTTP-Anfrage ist ung&uuml;ltig. M&ouml;gliche Gr&uuml;nde:
<UL>
<LI>Fehlende oder unbekannte Anfrage-Methode (GET, POST)
<LI>Fehlender URL
<LI>Fehlender HTTP Identifier (HTTP/1.0)
<LI>Anfrage ist zu gro&szlig;
<LI>Content-Length fehlt f&uuml;r POST- oder PUT-Anfragen
<LI>Ung&uuml;ltige Zeichen im Hostnamen - z.B. Unterstriche ('_'),
Umlaute und Kommata sind nicht erlaubt.
</UL>
</P>

<BR clear="all">
<HR noshade size="1px">
</BODY></HTML>

hab schon alles mögliche an einstellungen und so probiert aber ich komm einfach nicht drauf was ich noch machen muss dass das funktioniert...hat jemand eine idee?
 

musiKk

Top Contributor
Hat zwar nichts mit dem eigentlichen Thema zu tun, aber Zeile 29 muss unbedingt [c]out.write(buffer, 0, n);[/c] heißen.
 

irgendjemand

Top Contributor
Hat zwar nichts mit dem eigentlichen Thema zu tun, aber Zeile 29 muss unbedingt [c]out.write(buffer, 0, n);[/c] heißen.

OUCH ... das tut weh sowas zu lesen ...

mal so als hinweis : folgender code ist aus dem src.zip einer frischen Java7Update4-EA x64 setup

java.io_OutputStream
Java:
public void write(byte b[]) throws IOException {
        write(b, 0, b.length);
    }

so .. und jetzt erklär uns doch bitte mal den unterschiede zwischen OutputStream.write(byte[]) und OutputStream.write(byte[], int, int) ... weil ich sehe nur das die erste methode die zweite callt und damit den stacktrace um eine zeile länger werden lässt


*wie ich es liebe wenn angebliche profis so einen absoluten SCHROTT posten*


@TO
das problem werden sicherheitseinstellung des proxy-servers sein ...
da du diesen vermutlich nicht umgehen kannst *sonst würdest du es ja nicht versuchen* würde ich sagen : es ist dir schlicht nicht erlaubt
 
G

gassssssst

Gast
OUCH ... das tut weh sowas zu lesen ...

mal so als hinweis : folgender code ist aus dem src.zip einer frischen Java7Update4-EA x64 setup

java.io_OutputStream
Java:
public void write(byte b[]) throws IOException {
        write(b, 0, b.length);
    }

so .. und jetzt erklär uns doch bitte mal den unterschiede zwischen OutputStream.write(byte[]) und OutputStream.write(byte[], int, int) ... weil ich sehe nur das die erste methode die zweite callt und damit den stacktrace um eine zeile länger werden lässt


*wie ich es liebe wenn angebliche profis so einen absoluten SCHROTT posten*

Merkst du eigentlich nicht wie lächerlich du dich in jedem Thread machst in dem du postest?
Vielleicht solltest du manchmal entweder die Mund geschlossen halten oder vorher nachdenken bevor du postest, sowie lernen wie man sich wie ein erwachsener (oder heranwachsender...) Mensch gegenüber anderen Menschen ausdrückt.

Den Unterschied zwischen write(buffer, 0, buffer.length) und write(buffer, 0, n) zu finden überlasse ich dir jetzt mal selbst; sollte ja kein Problem sein, wenn deine Java Kenntnisse so groß sind wie du dich immer aufspielst.

Ich bitte dich einfach mal dich wieder zurück nach tutorials.de oder einem anderen Forum zu trollen, aber hier fängst du an zu nerven, Matze.
 

musiKk

Top Contributor
So viele Emotionen wollte ich eigentlich gar nicht wecken.

Den Unterschied zwischen write(buffer, 0, buffer.length) und write(buffer, 0, n) zu finden überlasse ich dir jetzt mal selbst; sollte ja kein Problem sein, wenn deine Java Kenntnisse so groß sind wie du dich immer aufspielst.

Ich sags mal selbst, damit der Threadersteller etwas davon hat: [c]read()[/c] liest nicht zwangsläufig bis zur Puffergröße. Und selbst wenn jeder Lesevorgang den Puffer immer füllt: Wenn die Gesamtlänge des Streams kein Vielfaches der Puffergröße ist (also hier 2048), ist spätestens beim letzten Lesevorgang das Array nicht komplett gefüllt.

Aber zum Thema: Funktioniert es denn ohne Proxy? Was für ein Server wird da angesprochen?
 
N

NLG

Gast
Ich sags mal selbst, damit der Threadersteller etwas davon hat: [c]read()[/c] liest nicht zwangsläufig bis zur Puffergröße. Und selbst wenn jeder Lesevorgang den Puffer immer füllt: Wenn die Gesamtlänge des Streams kein Vielfaches der Puffergröße ist (also hier 2048), ist spätestens beim letzten Lesevorgang das Array nicht komplett gefüllt.

Jo danke, das war der Fehler! :toll: :applaus:
 
T

Threadersteller

Gast
@LetzterPoster:

sag mal gehts noch dich einfach als Threadersteller auszugeben??
Nur so zur Info der Thread ist von mir! Und nein der buffer war nicht das Problem sondern der Proxy.

Weiß nicht was ihr hier für ein Problem mit dem buffer hattet aber selbst wenn das Array beim letzten Lesevorgang nicht ganz gefüllt ist...dann werden halt die vorhandenen Daten weggeschrieben
das interessiert keinen ich hab schon viele funktionierende Programme so geschrieben also macht euch mal keine Sorgen

schade dass niemand eine Idee zum Proxy hatte wie man das umgehen kann
 

Ähnliche Java Themen

Neue Themen


Oben