2016-05-03 15 views
0

Ich versuche, einige Daten von https-Server zu lesen HttpWebRequest verwenden und dieser Code funktioniert OK für HTTP aber Ausnahme mit HTTPS geworfen: (Android Proyect)Fehler beim Schreiben der Header. Xamarin Android

Meldung: "Fehler beim Schreiben der Header"

Antwort: (null)

Quelle: "System"

Status: System.Net.WebExceptionStatus.SendFailure Target: {System.Net.WebResponse EndGetResponse (System.IAsyncResult)

{System.Net.WebException: Fehler beim Schreiben der Header ---> System.IO.IOException: Die Authentifizierung oder Entschlüsselung ist fehlgeschlagen. ---> Mono.Security.Protocol.Tls.TlsException: Die Authentifizierung oder Entschlüsselung ist fehlgeschlagen. bei Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord (IAsyncResult asyncResult)}

InnerException: {System.IO.IOException: Die Authentifizierung oder Entschlüsselung ist fehlgeschlagen. ---> Mono.Security.Protocol.Tls.TlsException: Die Authentifizierung oder Entschlüsselung ist fehlgeschlagen. bei Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord (IAsyncResult asyncResult)

einige Informationen gefunden, aber die vorgeschlagenen Lösungen funktionieren nicht.

Kann mir jemand helfen.

Dies ist mein Code:

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 

[....] }

Vielen Dank

+0

Mögliche Duplikat [X.iOS Cycle7 scheint SSL zu brechen] (http://stackoverflow.com/questions/36931588/x-ios-cycle7-seems-to-break-ssl) – SushiHangover

+0

Ich habe dieses Problem in einem Android-Projekt .... – raBinn

Antwort

0

durch eine andere Person mit dem gleichen Problem:

Vielleicht ist meine Lösung nicht die beste, aber es funktioniert mit https.

INFO -> Verbindung mit dem Service-XML-RPC odoo von Xamarin (C#)

Process proceso = null; 
try { 
    var info_proceso = new ProcessStartInfo { 
    FileName = "curl",  
    Arguments = string.Format("-k {0} --data \"{1}\"", 
      bbdd.connection.url + "common", 
      "<methodCall><methodName>login</methodName>" + 
      "<param><value>your_bbdd</value></param>" + 
      "<param><value>your_user_or_mail</value></param>" + 
      "<param><value>your_pass</value></param></methodCall>"), 
    RedirectStandardOutput = true, 
    UseShellExecute = false, 
    CreateNoWindow = false, 
    }; 

    proceso = Process.Start(info_proceso); 
    var res = proceso.StandardOutput.ReadToEnd(); 
    } 
    finally { 
     if (proceso != null && proceso.HasExited == false) 
     proceso.Kill(); 
    } 

[Danke, machte mich Ihnen viel stärker]

0

erlebte ich diesen Fehler auf OS X 10.8. Vom Betriebssystem bereitgestellte Zertifikate waren in diesem Fall veraltet. Auf welcher Plattform implementieren Sie?

+0

Windows mit Xamarin Entwicklungsstudio . Es ist eine Android-Anwendung und der Server ist Linux. Ich habe gerade gelesen, dass, wenn ich das Zertifikat installieren sieht es könnte das Problem lösen. Ich werde es versuchen. Sie müssen das Problem beheben?, Ich habe genug Leute mit diesem bestimmten Fehler gesehen. Vielen Dank. – raBinn

+0

Wir haben aufgehört, das Betriebssystem zu unterstützen. Es gab keine Lösung, die wir uns ausgedacht hatten, aber um ehrlich zu sein, haben wir uns nicht viel Mühe gegeben, da OS X 10.8 heutzutage sowieso relativ alt ist. Hoffe, Sie haben Glück mit den Zertifikaten. – mithras

1

Mono nur dekodiert TLS 1.0

Switch to Xamarin Beta-Kanal und in den Projekteinstellungen, ios bauen, setzen Sie "Use NSURLSession" anstelle von "Mono Httpclient".

Weitere Informationen finden Sie unter this article.

+0

Diese Lösung ist gültig für Android App?, Vielen Dank !!! – raBinn

Verwandte Themen