Как я могу вызвать Rest Webserivce с методом post и отправить данные XML в C # - PullRequest
7 голосов
/ 22 сентября 2009

То, что я пытаюсь сделать здесь, это сделать запрос на публикацию Rest webserivce с данными XML.

это то, что у меня есть сейчас, но я не уверен, как передать мои данные XML

            XElement xml = new XElement("MatchedOptions",
               from m in _matchedOptionsList
               select new XElement("Listing",
                       new XElement("DomainID", _trafficCopInputs.DomainID),
                       new XElement("AdSource", _trafficCopInputs.AdSource),
                       new XElement("Campaign", _trafficCopInputs.Campaign),
                       new XElement("AdGroup", _trafficCopInputs.AdGroup),
                       new XElement("RedirectURL", m.RedirectPath),
                       new XElement("FunnelKeyword", m.FunnelKeyword)));

            HttpWebRequest req = WebRequest.Create("http://something.com/")
                 as HttpWebRequest;


            req.Method = "POST";
            req.ContentType = "text/xml";
            req.ContentLength = 0;
            StreamWriter writer = new StreamWriter(req.GetRequestStream());
            writer.WriteLine(xml.ToString());

Ответы [ 2 ]

6 голосов
/ 22 сентября 2009

Я использую класс WebClient:

WebClient webClient = new WebClient();
using (webClient)
{
   requestInterceptor.OnRequest(webClient);
   var enc = new ASCIIEncoding();
   return enc.GetString(webClient.UploadData(uri, enc.GetBytes(dataAsString)));
}
5 голосов
/ 22 сентября 2009

Нет ничего принципиально неправильного в том, что вы делаете, но вам нужно очистить / закрыть средство записи потока запросов. Это легко сделать с помощью конструкции using, так как утилита записи также сбрасывает ее:

using (StreamWriter writer = new StreamWriter(req.GetRequestStream()))
{
    writer.WriteLine(xml.ToString());
}

Затем вам нужно позвонить GetResponse, чтобы фактически выполнить запрос:

req.GetResponse()

(Обратите внимание, что HttpWebResponse, возвращаемый из этого, также одноразовый, поэтому не забудьте также утилизировать его.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...