# HTTP GET?



## Julia1984 (26. Mrz 2008)

Hallo,

ich möchte mittels Socketverbindung eine GET Anweisung absetzten und das Ergebnis auslesen. Dazu gehe ich wie folgt vor:


```
so = new Socket(url.getHost(), url.getPort());
      rawDataIn = so.getInputStream();
      rawDataOut = so.getOutputStream();
      
      rawDataInBuffer = new BufferedInputStream(rawDataIn);
      DataIn = new DataInputStream(rawDataIn);

      rawDataOutBuffer = new BufferedOutputStream(rawDataOut);
      DataOut = new DataOutputStream(rawDataOut);

      DataOut.writeBytes("GET " + httpf + " HTTP/1.0 \r\n");

      ....
```

Problem ist ich bekomme keine Antwort. Daher habe ich das ganze mal in Wireshark getracert. 

Wenn ich den Originalclient nehme, dann bekomme ich folgenden Eintrag in Wireshark

192.168.1.1 -> IP  HTTP GET ... HTTP/1.0

(so sollte es sein)

Nehm ich nun jetzt meinen Client, so bekomme ich im Ausgang 192.168.1.1 kein Eintrag eines HTTP Protokolls aufgelistet. Ich kann auch das GET nirgends entdecken, welches ich angeblich sende.

Wo liegt der Hase im Graben?

Liebe Grüße


----------



## Pappenheimer++ (26. Mrz 2008)

hai, hast du geflusht?


----------



## Julia1984 (26. Mrz 2008)

Ja,

habe ich:


```
DataOut.writeBytes("GET " + httpf + " HTTP/1.0 \r\n"); 
DataOut.flush();
...
```

In WireShark geht mit meinem Client einfach nichts mit dem Protokoll HTTP raus.

Ich habe einen kleinen MP3 Player geschrieben. MP3 Dateien abspielen geht. Ich muss aber noch Streams abspielen, nur bekomme ich keine Verbindung bzw. nicht die richtige Rückantwort. Eine LIB darf ich (dank meinem Prof) leider nicht nutzen.

Wenn ich mir die Kommunikation von z.B. WinAMP ansehe geht da einfach "nur" ein GET ... HTTP/1.0 per HTTP raus. Die Antwort ist dann einiges an Meta-Daten und der MP3 Stream.

Liebe Grüße

Julia


----------



## Pappenheimer++ (26. Mrz 2008)

versuch mal das hier:

```
Buffered Writer out=new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));

				out.write("GET " + httpf + " HTTP/1.0");
				out.newLine();
				out.flush();
```


----------



## HoaX (27. Mrz 2008)

Pappenheimer++ hat gesagt.:
			
		

> versuch mal das hier:
> 
> ```
> Buffered Writer out=new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
> ...



nein, nicht newLine, \r\n ist korrekt. zumindestens halb. iirc erwartet http eine leerzeile damit es weiß dass das ende des requestheaders erreicht ist, also \r\n\r\n am ende senden.


----------



## Pappenheimer++ (27. Mrz 2008)

@Hoax: Stimmt, das kann sein! Aber ob man den Windows-Zeilenumbruch (\r\n) braucht, oder ob nicht einfach \n reicht, bin ich mir nicht sicher, kann man aber ausprobieren!

@Julia1984: Was mich stutzig gemacht hat und wo vllt auch eine Fehlerquelle liegt, ist, dass du ja durch einen DataOutputStream gesendet hast! Normalerweise würde man doch einfach den BufferedWriter zum Character-übertragen nehmen.


----------



## tuxedo (27. Mrz 2008)

Pappenheimer++ hat gesagt.:
			
		

> @Julia1984: Was mich stutzig gemacht hat und wo vllt auch eine Fehlerquelle liegt, ist, dass du ja durch einen DataOutputStream gesendet hast! Normalerweise würde man doch einfach den BufferedWriter zum Character-übertragen nehmen.



Bin mir niocht 100% sicher, aber ich denke daran wird's liegen. Zur Not halt ganz ohne irgendwelche Writer, einfach mit einem OutputStream schreiben. 

- Alex


----------

