HTTP post xml 数据 .net4 c#

HTTP post xml data .net4 c#

我正在尝试 post 一个 xml 数据

目前我正在做这个。 requestXml 是 XmlDocument.

var connectionString = new Uri(SystemPropertyManager.Connexall_ConnectionString);

var request = (HttpWebRequest)WebRequest.Create(connectionString);
request.Timeout = 10000;
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(requestXml.ToString());
request.ContentType = "text/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
    Stream responseStream = response.GetResponseStream();
    string responseStr = new StreamReader(responseStream).ReadToEnd();
    return true;
}
return false;

为了对此进行测试,我编写了一个 MVC 应用程序

// POST api/Contact
public SomeObject[] Post([FromBody]string message)
{
    return new SomeObject[];
}

我可以调用 post 方法,但消息始终为空。我究竟做错了什么。由于 mvc web api 应用程序只是一个测试应用程序,我无法在消息正文中添加消息标识符。

此代码表示您想要接收序列化为 XML 或 JSON 的 .net String 对象。

// POST api/Contact
public SomeObject[] Post([FromBody]string message)
{
    return new SomeObject[];
}

这看起来像

<string xmlns="...">some string</string>

要将字符串读取为 XML,您可以执行

// POST api/Contact
public SomeObject[] Post([FromBody]XElement message)
{
    return new SomeObject[];
}

// POST api/Contact
public async SomeObject[] Post()
{
    string body = await Request.Content.ReadAsStringAsync();
    // Parse string to XML
    return new SomeObject[];
}