2016-09-16 4 views
-1

이 XML을 C#으로 보낼 때 - XML ​​문서 선언과에서 "UTF-8"을 모두 지정 했더라도 UTF-8이 아닌 형식으로 전송됩니다. HttpWebRequest.ContentType. UTF-8로 데이터를 보내려면 어떻게해야합니까?HttpWebRequest를 사용하여 XmlDocument를 인코딩 할 수 없습니다.

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; 
} 
+0

ContentType 헤더에는'encoding' 매개 변수가 없으므로'charset'으로 이름을 바꾸어야합니다. https://www.w3.org/Protocols/rfc1341/4_Content-Type.html – kiziu

답변

0

: 나는에이 라인을 변경해야

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

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

에 무엇을 당신은 ContentType 헤더에서 서버가 어떤 인코딩인지를 알기 위해 설정합니다. 당신은 응답을 받기를 원합니다.

0

는 발견 : 당신은 한 줄 변경해야

bytes = System.Text.Encoding.UTF8.GetBytes(requestXml); 
관련 문제