Datenversand per HTTP

MD1978

Erfahrenes Mitglied
Hallo,
ich senden Daten vom Pocket PC zum Server per HTTP.

Code des Client:

Code:
   private void sendHTTP (String serverName, int serverPort, String data)
   {
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://" + serverName + ":" + serverPort);
   
     req.Method = "POST";
     req.AllowWriteStreamBuffering = true;
   
     Stream reqStream = req.GetRequestStream();
   
     StreamWriter wrtr = new StreamWriter(reqStream);
     wrtr.WriteLine(data);
               
     wrtr.Close();
   
     reqStream.Close();
   
     req.GetResponse().Close();
   }


Code des Servers:

Code:
   TcpClient tcpClient;
   
   tcpClient = threadListener.AcceptTcpClient();
   
   StreamReader reader = new StreamReader(tcpClient.GetStream(),System.Text.Encoding.UTF8);
   StreamWriter writer = new StreamWriter(tcpClient.GetStream());
   
   string data = ""; 
   while (reader.Peek() != -1)
   {
     string line = reader.ReadLine();
     data += line;
   }
   
   // Hier findet die Verarbeitung von data statt.
   
       
   // HTTP-Response erstellen (verwendet minimalen Header)
   string buffer = "";
   buffer = buffer + "HTTP/1.1 200\r\n";
   buffer = buffer + "Content-Length: 0\r\n\r\n";
   
   writer.Write(buffer);
                           
   
   streamWriter.WriteLine();
   
   writer.Close();
   reader.Close();
       
   tcpClient.Close();




Wenn ich nun den Client in einer Endlosschleife mit 20 sek Pause zwischen den einzelnen Durchläufen laufen lasse, empfängt der Server zwischendurch HTTP-Pakete ohne Nutzdaten, also der Form:
"POST / HTTP/1.1Content-Length: 67Connection: Keep-AliveExpect: 100-continueHost: 192.168.1.2"

Das heisst, die Content-Length wird richtig angeben, aber der Inhalt geht verloren.

Ansonsten schauen die HTTP-Pakete so aus:
"POST / HTTP/1.1Content-Length: 67Connection: Keep-AliveExpect: 100-continueHost: 192.168.1.2Time: 30.01.2005 11:51:45 PDA-ID: 1 Longitude: 235, Latitude: 847"

Was mache ich da falsch?


Gruss,

MD
 
ich habe jetzt den Fehler gefunden: die HTTP Daten werden auf mehrere TCP Segmente verteilt. Wie erhalte ich auf Serverseite am besten den ganzen HTTP-Request

Gruss,

MD
 
Zuletzt bearbeitet:
Zurück