2009-07-08 11 views
5

OK, na początek, nie używam żadnej usługi internetowej. W tej chwili nie wiem zbyt wiele o aplikacji otrzymującej XML inaczej niż go otrzymuje. Wielka pomoc tam wiem. Nie napisałem aplikacji odbierającej, ale moja firma nie ma żadnych użytecznych sposobów testowania fazy transmisji XML.Wysyłaj XML przez HTTP Opublikuj w IP: Port

Zasadniczo chcę, aby wysłać dokument XML tak ...

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

... do wniosku, że ja naprawdę nie wiem dużo na temat. To nic nadzwyczajnego i przy odpowiedniej pomocy mógłbym uzyskać więcej informacji. Ale to, co chcę zrobić, to wymyślić coś w rodzaju aplikacji C# Forms, która może przyjąć powyższą prośbę powyżej, wysłać ją za pomocą IP i portu i mam nadzieję, że coś się wydarzy.

+0

Mieszacie tutaj wiele koncepcji. Tytuł mówi http POST, ale pytanie wspomina o aplikacji Forms i wysyła ją za pośrednictwem portu TCP. Więc co to jest? aplikacja internetowa lub aplikacja WinForms? A czy XML jest czymś, co ktoś mógłby tam wkleić? –

+0

Nie, to aplikacja WinForms, która może zrobić post HTTP. – Stevus

Odpowiedz

10

Zalecanym sposobem wykonywania prostych żądań internetowych jest użycie obiektu WebClient.

Oto fragment kodu:

// 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

Czy to powinno być System.Net zamiast System.Web? – Stevus

+0

@Steven: tak! Dzięki. –

+0

Nie zapomnij usunąć atrybutu "encoding" z deklaracji xml (np. '') Lub spraw, aby atrybut kodowania odpowiadał kodowaniu właściwości 'WebClient.Encoding' (np. '>) ** Uwaga: ** nie wiem, jakie jest domyślne kodowanie' WebClient', ale masz nadzieję, że jest to jakaś forma Unicode. –

0

Jeśli masz IP i port, dlaczego nie próbujesz XML poprzez TCP/IP. W języku C# można to zrobić za pomocą klasy System.Net.Sockets TCPClient. Ta klasa ma metody Połącz, wyślij i odbierz, aby połączyć się z adresem IP i portem, następnie wyślij wiadomość i poczekaj na otrzymanie wiadomości.

+2

Dlaczego nie? Nie powinieneś wynajdować koła ponownie. Istnieje już biblioteka przetestowanych, sprawdzonych pod kątem bezpieczeństwa, obsługiwanych kodów do wysyłania danych do serwera http. Tak samo interesujące, jak samodzielne pisanie kodu gniazd, zbyt łatwo jest mieć błędy lub luki w zabezpieczeniach. –