繁体   English   中英

如何在HttpWebRequest标头C#MVC4中传递XML字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM