Ich verwende Bobbys Antwort, um die Benutzer-Timeline von Twitter abzurufen. Der Code ist sehr einfach zu verstehen, und ich habe es unter Windows/.NET 4.5 ausprobiert, es funktioniert sehr gut.
Aber wenn ich versuche, genau den gleichen Code auf Ubuntu/Mono 2.10 auszuführen, wird eine Ausnahme geworfen:
System.Net.WebException wurde ausgelöst
Fehler beim Abrufen des Antwortstreams (Schreiben: Die Authentifizierung oder Entschlüsselung ist fehlgeschlagen.): SendFailure
Es scheint, dass Mono keinen OAuth-Header an den HTTP-Request anhängen kann. Gibt es also einen guten Ansatz, um die Twitter-Benutzer-Timeline mit Mono abzurufen?
Hier ist der StackTrace:
System.Net.WebException: Fehler beim Abrufen des Antwortstreams (Schreiben: Die Authentifizierung oder Entschlüsselung ist fehlgeschlagen.): SendFailure ---> System.Exception: Die Authentifizierung oder Entschlüsselung ist fehlgeschlagen. ---> System.Exception: Vom Server wurde ein ungültiges Zertifikat empfangen. Fehlercode: 0xffffffff800b010a
bei Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0
bei Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0
bei Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0
bei (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
bei Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0
bei Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0
--- Ende der inneren Ausnahmestapelüberwachung ---
bei Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0
--- Ende der inneren Ausnahmestapelüberwachung ---
bei System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in :0
bei System.Net.HttpWebRequest.GetResponse () [0x00000] in :0
bei test1.MainClass.Main (System.String[] args) [0x00207] in /home/jerry/test1/test1/Main.cs:89