[英]How to pass header and Body value using HttpWebRequest in C#?
[英]How to Pass XML String in HttpWebRequest Header C# MVC4?
我想在HttpWebRequest
标头中传递XML字符串吗? 我在MVC4 .Net Framework 4.5 C#中的应用程序。 我的代码如下:
try
{
String requestXML = @"<REPORT>
<USER-DETAIL>
<NAME>ABC</NAME1>
<PASSWORD>12345</NAME2>
</USER-DETAIL>
</REPORT>";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.demoservice.com/service/getReport");
request.Accept = "application/xml";
request.Method = "POST";
request.Headers.Add("userId", "admin");
request.Headers.Add("password", "***");
request.Headers.Add("requestXml", requestXML);
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
String output = new StreamReader(responseStream).ReadToEnd();
Console.WriteLine(output);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}
但是我遇到了以下错误,
指定的值包含无效的CRLF字符。 参数名称:值
请帮助,在此先感谢。
不要在请求标头中添加任意数据。 POST数据应放在请求正文中 。 请求标头必须符合HTTP规范,而您错误地尝试在其中填充的数据则不符合。
这是您应该如何做:
var data = Encoding.UTF8.GetBytes(requestXML);
request.ContentType = "application/xml";
request.ContentLength = data.Length;
using (var body = request.GetRequestStream())
{
body.Write(data, 0, data.Length);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.