Вопрос по xml, http, c#, post – Отправить XML через HTTP Post на IP: Порт

5

Итак, для начала, я не использую какой-либо веб-сервис. Сейчас я не очень много знаю о приложении, получающем 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 и порт и, надеюсь, увидеть, что что-то произойдет.

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

Ваш Ответ

2   ответа
0

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

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

Рекомендуемый способ сделать простые веб-запросы - использовать объект 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);  

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

Похожие вопросы