【问题标题】:Unable to send the XmlDocument as UTF-8 Encoded using HttpWebRequest无法使用 HttpWebRequest 将 XmlDocument 发送为 UTF-8 编码
【发布时间】:2017-01-24 13:17:48
【问题描述】:

当我在 c# 中发送此 xml 时,即使我在 xml 文档声明和 HttpWebRequest.ContentType 中都指定了“UTF-8”,它也会以非 UTF-8 格式发送。如何强制它以 UTF-8 格式发送数据?

XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = xmlDoc.DocumentElement;
xmlDoc.InsertBefore(xmlDeclaration, root);
XmlElement element1 = xmlDoc.CreateElement(string.Empty, "pacsoft", string.Empty);
xmlDoc.AppendChild(element1);
string destinationUrl = "";
Uri uri = new Uri(destinationUrl);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(requestXml);
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, System.Text.Encoding.UTF8).ReadToEnd();
return responseStr;
}

【问题讨论】:

标签: c# .net xmlhttprequest


【解决方案1】:

你必须改变一行:

bytes = System.Text.Encoding.ASCII.GetBytes(requestXml);

到

bytes = System.Text.Encoding.UTF8.GetBytes(requestXml)

您在 ContentType 标头中设置的内容是为了让服务器知道您要接受什么编码来响应。

【讨论】:

    【解决方案2】:

    找到了:我需要把这行改成:

     bytes = System.Text.Encoding.UTF8.GetBytes(requestXml);
    

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 2021-03-22
      • 2020-12-26
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多