【发布时间】:2016-05-03 08:20:21
【问题描述】:
我正在尝试使用 HttpWebRequest 从 https 服务器读取一些数据,此代码适用于 HTTP,但使用 HTTPS 时抛出异常:(Android Proyect)
消息:“写入标头错误”
响应:(空)
来源:“系统”
状态:System.Net.WebExceptionStatus.SendFailure 目标站点:{System.Net.WebResponse EndGetResponse(System.IAsyncResult)
{System.Net.WebException: Error writing headers ---> System.IO.IOException: 认证或解密失败。 ---> Mono.Security.Protocol.Tls.TlsException:认证或解密失败。在 Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord (IAsyncResult asyncResult)}
InnerException: {System.IO.IOException: 身份验证或解密失败。 ---> Mono.Security.Protocol.Tls.TlsException:认证或解密失败。 在 Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord (IAsyncResult asyncResult)
找到一些信息,但建议的解决方案不起作用。
谁能帮帮我。
这是我的代码:
string serviceUrl = "https://erp.xxxxxxx.com/xmlrpc/";
XmlRpc.serviceUrl = bbdd.connection.url + "common";
var parameterArray = new object[3];
parameterArray.SetValue(bbdd.connection.bbdd, 0);
parameterArray.SetValue(user.Text, 1);
parameterArray.SetValue(pass.Text, 2);
XmlRpc.call("login", parameterArray);
-----------------------------------------------------------
public static object call(string methodName, params object[] args) {
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceUrl);
request.UserAgent = "XML-RPC Client (Xamarin)";
request.Method = "POST";
request.ContentType = "text/xml";
request.Timeout = 6000;
Stream stream = (Stream)request.GetRequestStream();
using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.ASCII)) {
writer.WriteStartDocument();
writer.WriteStartElement("methodCall");
writer.WriteElementString("methodName", methodName);
writer.WriteStartElement("params");
if (args != null)
foreach (object arg in args)
{
writer.WriteStartElement("param");
SerializeParam(writer, arg);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
}
XmlTextReader xmlResponse = new XmlTextReader(request.GetResponse().GetResponseStream()); <- here throw exception
[....] }
非常感谢
【问题讨论】:
-
我在一个 Android 项目中遇到了这个问题......