2016-09-16 3 views
-1

このxmlをC#で送信すると、xmlドキュメント宣言との両方で "UTF-8"を指定しても、UTF- HttpWebRequest.ContentType。データをUTF-8として送信するにはどうしたらいいですか?それを見つけたHttpWebRequestを使用してUTF-8エンコードされた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

:私はにこの行を変更する必要がありますContentTypeヘッダーで設定するのは、サーバーがどのエンコーディングを認識するかです。あなたは応答を受け入れることを望みます。

0

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

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

へ:あなたが1行を変更する必要があります

bytes = System.Text.Encoding.UTF8.GetBytes(requestXml); 
関連する問題