Отправить XML через HTTP Post на IP: Порт

Итак, для начала, я не использую какой-либо веб-сервис. Сейчас я не очень много знаю о приложении, получающем XML, кроме того, которое получает его. Большую помощь там я знаю. Я не писал принимающее приложение, но у моей компании нет каких-либо полезных способов тестирования фазы передачи XML.

Я в основном хочу отправить документ XML, как это ...

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

... к приложению, о котором я действительно мало знаю. Ничего особенного, и при правильной помощи я, вероятно, смогу узнать больше информации. Но я хотел бы найти какое-нибудь приложение на C # Forms, которое может выполнить вышеупомянутый запрос, отправить его через IP и порт и, надеюсь, увидеть, что что-то произойдет.

 Knut Haugen08 июл. 2009 г., 18:13
Вы смешиваете множество понятий здесь. В заголовке указано http POST, но в вопросе упоминается приложение Forms и его отправка через порт TCP. Так что это? веб-приложение или приложение WinForms? И является ли XML просто чем-то, что кто-то вставит туда?
 Steven08 июл. 2009 г., 18:29
Нет, это приложение WinForms, которое может отправлять сообщения HTTP.

Ответы на вопрос(2)

Если у вас есть IP-адрес и порт, почему вы не пытаетесь XML через TCP / IP. В C # вы можете сделать это, используя System.Net.Sockets класс TCPClient. Этот класс имеет методы Connect, send и receive, чтобы соединиться с IP и портом, затем отправить сообщение и дождаться получения сообщения.

 24 авг. 2010 г., 06:38
Почему бы и нет? Вы не должны заново изобретать колесо. Уже имеется библиотека проверенного, проверенного на безопасность, поддерживаемого кода для отправки данных на http-сервер. Как бы ни было интересно писать код для сокетов самостоятельно, слишком легко иметь ошибки или дыры в безопасности.
Решение Вопроса

Рекомендуемый способ сделать простые веб-запросы - использовать объект WebClient.

Вот фрагмент кода:

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

}
 08 июл. 2009 г., 18:57
@ Стивен: да! Благодарю.
 24 авг. 2010 г., 06:34
Не забудьте удалитьencoding атрибут из декларации xml (например,<?xml version="1.0"?>) или сделать атрибут кодирования совпадающим с кодировкойWebClient.Encoding собственность (например,<?xml version="1.0" encoding="UTF-16"?>) Note: я не знаю, какая кодировка по умолчаниюWebClient есть, но вам лучше надеяться, что это какая-то форма Unicode.
 Steven08 июл. 2009 г., 18:31
Должно ли это быть System.Net вместо System.Web?

Ваш ответ на вопрос