Подтвердить что ты не робот

С# HttpWebRequest с XML структурированными данными

Я разрабатываю клиентскую часть стороннего веб-сервиса. Целью является то, что я отправляю xml файл на сервер. Как связать xml файл с httpwebrequest? Какой контент нужен? Дополнительные предложения?

Я не могу использовать mtom или dime.ie, потому что я использую httpwebrequest. Я также не могу использовать WCF.

4b9b3361

Ответ 1

Вот очень простой метод отправки XML-структурированных данных с использованием HttpWebRequest (кстати, вам нужно использовать request.ContentType = "application/xml";):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(myUrl));
request.Method = "POST";
request.ContentType = "application/xml";
request.Accept = "application/xml";

XElement redmineRequestXML =
    new XElement("issue",
    new XElement("project_id", 17)
);

byte[] bytes = Encoding.UTF8.GetBytes(redmineRequestXML.ToString());

request.ContentLength = bytes.Length;

using (Stream putStream = request.GetRequestStream())
{
    putStream.Write(bytes, 0, bytes.Length);
}

// Log the response from Redmine RESTful service
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
    Logger.Info("Response from Redmine Issue Tracker: " + reader.ReadToEnd());
}

Я использую это в одном из своих проектов (NBug), чтобы отправить отчет о проблеме в мой трекер Redmine, который принимает структурированные данные XML через веб-запросы (через POST). Если вам нужны дополнительные примеры, вы можете получить здесь несколько полнофункциональных примеров: http://nbug.codeplex.com/SourceControl/list/changesets (нажмите "Обзор" под меткой "Последний Verion" справа, перейдите к "NBug\Submit\Tracker\Redmine.cs" )