ERLEDIGT
JA
JA
ANTWORTEN
20
20
ZUGRIFFE
3553
3553
EMPFEHLEN
-
Hallo,
zuerst einmal danke für die vielen hilfreichen Tips. Hat mir oft weitergeholfen.
Leider habe ich noch eine Problem:
Ich habe eine Anwendung, die an eine andere Anwendung Daten über HTTP schicken soll. Ich will aber keine Antwort zurück erhalten. Mein Code bisher:
publicvoid sendHTTP (String serverName, int serverPort, String data) {
try {
string postData = "data=" + data;
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] pdbytes = encoding.GetBytes(postData);
HttpWebRequest hwr = (HttpWebRequest) WebRequest.Create("http://" + serverName + ":" + serverPort);
hwr.Method = "POST";
hwr.ContentLength = postData.Length;
hwr.ContentType = "application/x-www-form-urlencoded";
Wie schicke ich das nun, ohne eine Antwort zu erhalten (also nicht mit
hwr.GetRequestStream()) und wie schliesse ich dann die HTTP Verbindung?
Gruss,
MD
Geändert von MD1978 (17.12.04 um 17:40 Uhr)
-
18.12.04 17:05 #2
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Hi.
Einfach GetResponse aufrufen und das zurückgegebene Objekt verwerfen.
MfG,
AlexWith the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
Hallo,
ich habe mich etwas falsch ausgedrückt: ich will einfach Daten per HTTP an einen Server schicken.
Mein Code:
publicvoid sendHTTP (String serverName, int serverPort, String data)
{
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://" + serverName + ":" + serverPort);
req.Method = "PUT";
req.AllowWriteStreamBuffering = true;
Stream reqStream = req.GetRequestStream();
StreamWriter wrtr = new StreamWriter(reqStream);
wrtr.WriteLine(data);
wrtr.Close();
req.GetResponse();
}
Die Daten kommen jetzt auch schon beim Server an. Wie kann ich aber nun die Verbindung abbauen?
Gruss,
MD
-
21.12.04 13:31 #4
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Warum glaubst du, dass du noch eine hast?
With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
weil der Server kein Ende der Verbindung anzeigt.
Hier der Servercode:
publicvoid HandleConnection()
{
TcpClient tcpClient;
//Program blocks on Accept() until a client connects.
tcpClient = threadListener.AcceptTcpClient();
NetworkStream ns = tcpClient.GetStream();
connections++;
Console.WriteLine("New client accepted: {0} active connections", connections);
this.serverGUI.sw.WriteLine("Client is connected through HTTP.");
Byte[] received = new Byte[512];
while (true)
{
int bytesReceived = ns.Read(received, 0, received.Length);
if (bytesReceived == 0)
break;
String dataReceived = System.Text.Encoding.ASCII.GetString(received,0, bytesReceived);
this.serverGUI.sw.WriteLine("HTTP Data: " + dataReceived + "");
}
this.serverGUI.sw.WriteLine("HTTP connection is closed.");
ns.Close();
tcpClient.Close();
connections--;
Console.WriteLine("Client disconnected: {0} active connections", connections);
}
Hat jemand ein Beispiel für einen einfachen Thread, der HTTP Request entgegenimmt. Mein Thread ist ja ein TCP Client. Funktioniert, aber die Verbindung wird nicht beendet.
Gruss,
MD
-
21.12.04 14:31 #6
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Du liest, und liest, und liest, und list..

Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
using System; using System.Net.Sockets; using System.Threading; using System.IO; public class TestServer { public static void Main(string[] args) { new TestServer(); } public TestServer() { Listen(); } TcpListener listener; private void Listen() { listener = new TcpListener(5001); listener.Start(); while (true) { RequestHandler rh = new RequestHandler(listener.AcceptTcpClient()); Thread requestThread = new Thread(new ThreadStart(rh.Handle)); requestThread.Start(); } } } public class RequestHandler { TcpClient tcpClient; public RequestHandler(TcpClient client) { tcpClient = client; } public void Handle() { StreamReader reader = new StreamReader(tcpClient.GetStream(),System.Text.Encoding.ASCII); Console.WriteLine("New client accepted"); string data = ""; int content_length = 0; while (reader.Peek() != -1) { string line = reader.ReadLine(); if (line.StartsWith("Content-Length: ")) content_length = int.Parse(line.Replace("Content-Length: ", "")); data += line; } reader.Close(); tcpClient.Close(); Console.WriteLine("Client disconnected"); } }With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
@Alexander: vielen Dank für die hilfreichen und extrem schnellen Anworten!
ich habe jetzt noch ein kleines Problem. So schaut mein Client aus:
publicvoid sendHTTP (String serverName, int serverPort, String data)
{
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://" + serverName + ":" + serverPort);
req.Method = "PUT";
req.AllowWriteStreamBuffering = true;
Stream reqStream = req.GetRequestStream();
StreamWriter wrtr = new StreamWriter(reqStream);
wrtr.WriteLine(data);
wrtr.Flush();
wrtr.Close();
req.GetResponse();
}
Der Server erkennt jetzt auch das Ende der Verbindung. "req.GetResponse()" verursacht jetzt jedoch folgende Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs 'System.Net.WebException' ist in System.dll aufgetreten.
Zusätzliche Informationen: Von der Übertragungsverbindung können keine Daten gelesen werden.
Gibt es einen anderen Befehl außer GetResponse() um die Daten zu schicken?
Gruss,
MD
-
21.12.04 18:13 #8
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Tjo, der Fehler liegt daran, das dein Server keine Daten schickt.
Probier mal ohne das GetResponse, wäre durchaus möglich das bereits durch das Schließen des Request-Streams der Request abgeschlossen ist.With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
nein, funktioniert nicht ohne getResponse. Deshalb habe ich das flush() hinzugefügt, ändert aber auch nichts.
Wie kann ich Daten zurückschicken? Eigentlich wollte ich darauf verzichten, aber ich kann es benutzen, um eine Prüfsumme zu übertragen.
Das Programm , das auf einem Pocket PC läuft, soll nämlich per UDP, TCP, HTTP und HTTPS über eine GPRS-Verbindung Daten übertragen und dabei möglichst wenig Traffic verursachen.
-
21.12.04 18:53 #10
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
public void Handle() { StreamReader reader = new StreamReader(tcpClient.GetStream(),System.Text.Encoding.ASCII); StreamWriter writer = new StreamWriter(tcpClient.GetStream()); Console.WriteLine("New client accepted"); string data = ""; int content_length = 0; while (reader.Peek() != -1) { string line = reader.ReadLine(); if (line.StartsWith("Content-Length: ")) content_length = int.Parse(line.Replace("Content-Length: ", "")); data += line; } reader.Close(); writer.WriteLine("Bla"); tcpClient.Close(); Console.WriteLine("Client disconnected"); }With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
ich habe die writer Statements eingefügt, aber ich kriege immer noch dieselbe Fehlermeldung.
MD
-
22.12.04 18:04 #12
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Mhh...
Diese beiden Snippets jetzt funktionieren bei mir:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
using System; using System.Net.Sockets; using System.Threading; using System.IO; public class TestServer { public static void Main(string[] args) { new TestServer(); } public TestServer() { Listen(); } TcpListener listener; private void Listen() { listener = new TcpListener(5001); listener.Start(); while (true) { RequestHandler rh = new RequestHandler(listener.AcceptTcpClient()); Thread requestThread = new Thread(new ThreadStart(rh.Handle)); requestThread.Start(); } } } public class RequestHandler { TcpClient tcpClient; public RequestHandler(TcpClient client) { tcpClient = client; } public void Handle() { StreamReader reader = new StreamReader(tcpClient.GetStream(),System.Text.Encoding.ASCII); StreamWriter writer = new StreamWriter(tcpClient.GetStream()); Console.WriteLine("New client accepted"); string data = ""; int content_length = 0; while (reader.Peek() != -1) { string line = reader.ReadLine(); if (line.StartsWith("Content-Length: ")) content_length = int.Parse(line.Replace("Content-Length: ", "")); data += line; } writer.Write("Blaaaa"); writer.Close(); reader.Close(); tcpClient.Close(); Console.WriteLine("Client disconnected"); } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
using System; using System.Net.Sockets; using System.Threading; using System.IO; public class TestServer { public static void Main(string[] args) { new TestServer(); } public TestServer() { Listen(); } TcpListener listener; private void Listen() { listener = new TcpListener(5001); listener.Start(); while (true) { RequestHandler rh = new RequestHandler(listener.AcceptTcpClient()); Thread requestThread = new Thread(new ThreadStart(rh.Handle)); requestThread.Start(); } } } public class RequestHandler { TcpClient tcpClient; public RequestHandler(TcpClient client) { tcpClient = client; } public void Handle() { StreamReader reader = new StreamReader(tcpClient.GetStream(),System.Text.Encoding.ASCII); StreamWriter writer = new StreamWriter(tcpClient.GetStream()); Console.WriteLine("New client accepted"); string data = ""; int content_length = 0; while (reader.Peek() != -1) { string line = reader.ReadLine(); if (line.StartsWith("Content-Length: ")) content_length = int.Parse(line.Replace("Content-Length: ", "")); data += line; } writer.Write("Blaaaa"); writer.Close(); reader.Close(); tcpClient.Close(); Console.WriteLine("Client disconnected"); } }With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
Hallo,
ich weiss nicht, ob ich was übersehen habe, aber wo unterscheiden sich die 2 Codes ?
Gruss,
MD
-
22.12.04 21:31 #14
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Argh.. 2 mal das selbe gepostet.
Hier der Code für den Request den ich benutzte zum Testen.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
using System.IO; using System; using System.Net; using System.Net.Sockets; public class Test { public static void Main(string[] args) { string serverName = "localhost"; int serverPort = 5001; string data = "name=alex"; HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://" + serverName + ":" + serverPort); req.Method = "PUT"; req.AllowWriteStreamBuffering = true; Stream reqStream = req.GetRequestStream(); StreamWriter wrtr = new StreamWriter(reqStream); wrtr.WriteLine(data); wrtr.Close(); } }With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
Hallo Alexander,
Dein Client und Server funktioniert.
Wenn ich aber Deinen Client als Pocket PC Anwendung kompiliere, werden keine Daten an den Server geschickt, obwohl die Klassen alle im Compact Framework auch unterstützt werden.
Komisch!
Wenn ich dann req.GetResponse() beim Client hinzufüge, kommen die Daten beim Server an, aber beim Client gibt es wieder folgende Fehlermeldung:
"Von der Übertragungsverbindung können keine Daten gelesen werden."
MD
Ähnliche Themen
-
Frage zu Indy HTTP Antwort Stream
Von real_benedikt im Forum Delphi, Kylix, PascalAntworten: 1Letzter Beitrag: 20.05.08, 23:09 -
Http-request ?!
Von mIschKo im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 03.10.07, 18:32 -
Http Request
Von NanoNuna im Forum PHPAntworten: 2Letzter Beitrag: 02.04.07, 10:55 -
Http - Request
Von rauchmelder im Forum .NET ArchivAntworten: 2Letzter Beitrag: 04.12.04, 22:42





Zitieren

Login





