【发布时间】:2010-10-21 21:28:28
【问题描述】:
我有一个通过 HTTPS Post 将 XML 文档发送到服务器的 C# 应用程序。问题是服务器只接收第一行<?xml version="1.0" encoding="UTF-8"?>。这是我的代码的截断版本(仅重要部分)。什么可能导致这个问题?我的代码有修改吗?
与服务器的 SSL 连接已得到保证,我收到的返回消息是“不接受文档类型”。
谢谢!
StreamWriter loPostData = null;
HttpWebRequest loHttp = null;
HttpWebResponse loWebResponse = null;
byte[] buffer;
String uri = ConfigurationSettings.AppSettings["URL"];
loHttp = (HttpWebRequest)WebRequest.Create(uri);
buffer = Encoding.ASCII.GetBytes(payload);
//Request Header
loHttp.ProtocolVersion = HttpVersion.Version11;
loHttp.KeepAlive = true;
loHttp.Accept = "text/xml;charset=\"utf-8\"";
loHttp.Method = WebRequestMethods.Http.Post;
loHttp.ContentType = "text/xml;charset=\"utf-8\"";
loHttp.ContentLength = buffer.Length;
loHttp.SendChunked = true;
loHttp.TransferEncoding = "7bit";
loHttp.AllowWriteStreamBuffering = true;
ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true; // **** Always accept return
};
X509Certificate x509_1 = new X509Certificate(ConfigurationSettings.AppSettings["OPEN_INVOICE_CERTIFICATE"]);
loHttp.ClientCertificates.Add(x509_1);
//Send data
loPostData = loHttp.GetRequestStream();
loPostData.Write(buffer, 0, buffer.Length);
loPostData.Close();
//Get a response
loWebResponse = (HttpWebResponse)loHttp.GetResponse();
StreamReader responsestream = new StreamReader(loWebResponse.GetResponseStream());
String rsp = responsestream.ReadToEnd();
responsestream.Close();
【问题讨论】: