2009-07-08 5 views
5

Ok, um zu beginnen, verwende ich keine Art von Web-Service. Im Moment weiß ich nicht viel über die Anwendung, die die XML empfängt, außer sie empfängt sie. Große Hilfe da, ich weiß. Ich habe die empfangende Anwendung nicht geschrieben, aber meine Firma hat keine nützlichen Möglichkeiten, die XML-Übertragungsphase zu testen.Senden Sie XML über HTTP Post zu IP: Port

Ich möchte im Grunde ein XML-Dokument wie folgt ...

<H2HXmlRequest class="myClass"> 
<Call> 
    <CallerID></CallerID> 
    <Duration>0</Duration> 
</Call> 
<Terminal> 
    <CancelDate></CancelDate> 
    <ClerkLoginTime></ClerkLoginTime> 
</Terminal> 
<Transaction> 
    <AcceptedCurrency></AcceptedCurrency> 
    <AccountId>6208700003</AccountId> 
</Transaction> 
</H2HXmlRequest> 

... an die Anwendung senden, die ich weiß nicht wirklich eine ganze Menge über. Es ist nichts Besonderes und mit der richtigen Hilfe könnte ich wahrscheinlich mehr Informationen finden. Aber ich möchte eine Art C# Forms-App entwickeln, die diese Anfrage übernehmen kann, sie über eine IP und einen Port weiterleiten und hoffentlich etwas passieren sehen.

+0

Sie mischen viele Konzepte hier. Der Titel sagt http POST, aber Frage erwähnt Forms App und sendet es über einen TCP-Port. Also was ist es? eine Web-App oder WinForms App? Und ist das XML etwas, das jemand dort einfügen würde? –

+0

Nein, es ist WinForms App, die einen HTTP-Post machen kann. – Stevus

Antwort

10

Die empfohlene Methode zum Erstellen einfacher Webanforderungen besteht in der Verwendung des WebClient-Objekts.

Hier ist ein Code-Schnipsel:

// assume your XML string is returned from GetXmlString() 
string xml = GetXmlString(); 


// assume port 8080 
string url = new UriBuilder("http","www.example.com",8080).ToString();  


// create a client object 
using(System.Net.WebClient client = new System.Net.WebClient()) { 
    // performs an HTTP POST 
    client.UploadString(url, xml); 

} 
+0

Sollte das System.Net anstelle von System.Web sein? – Stevus

+0

@Steven: ja! Vielen Dank. –

+0

Vergessen Sie nicht, entweder das 'encoding'-Attribut aus der XML-Deklaration zu entfernen (zB ''), Oder das Encodierungsattribut der Encoding-Eigenschaft 'WebClient.Encoding' anzupassen (zB '') ** Hinweis: ** Ich weiß nicht, was die Standardcodierung von 'WebClient' ist, aber Sie hoffen am ehesten, dass es sich um ein Formular handelt von Unicode. –

0

Wenn Sie eine IP und Port haben, warum Sie nicht XML über TCP/IP versucht werden. In C# können Sie dies mithilfe der System.Net.Sockets-Klasse TCPClient tun. Diese Klasse hat Methoden Connect, send und receive, um mit IP und Port zu verbinden, dann Nachricht senden und warten, um Nachricht zu empfangen.

+2

Warum nicht? Sie sollten das Rad nicht neu erfinden. Es gibt bereits eine Bibliothek mit getestetem, sicherheitsüberprüftem, verwaltetem Code, um Daten an einen HTTP-Server zu senden. So interessant es wäre, Sockets-Code selbst zu schreiben, es ist viel zu einfach, Bugs oder Sicherheitslücken zu haben. –

Verwandte Themen