Я пытаюсь сделать HTTP-запрос POST к моей службе WCF и отправить некоторые данные в формате XML. Я попытался создать строку XML, используя как XmlWriter, так и просто конкатенацию строк, но у меня всегда есть экранирующие символы (\ "и другие) в моей строке, и поэтому мой POST завершается неудачей.
Вот как я строю строку XML:
var data = string.Empty;
data += (@"<Root xmlns=""http://schemas.datacontract.org/2004/07/..."" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">");
data += (String.Format("<Element1>{0}</Element1>", element1));
data += (String.Format("<Element2>{0}</Element2>", element1));
data += (String.Format("<Element3>{0}</Element3>", element1));
data += (String.Format("<Element4>{0}</Element4>", element4));
data += (String.Format("</Root>"));
и я получаю \ "символы в элементе Root из-за атрибута xmlns и его значения. Вот почему мой POST всегда возвращает 400 Bad Request. Вот как я делаю POST:
var req = WebRequest.Create(uri);
req.ContentType = "application/xml; charset=utf-8";
req.Method = "POST";
var bytes = Encoding.UTF8.GetBytes(data);
req.ContentLength = bytes.Length;
var os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Flush();
os.Close();
var response = _GetResponseString(req.GetResponse());
return response;
Как избавиться от нежелательных персонажей и заставить этот POST работать?