2013-06-03 10 views
14

Próbuję użyć WebClient.UploadFile z adresem URL HTTPS, ale kończę zUzyskiwanie "Uścisk dłoni nie powiodło się ... nieoczekiwany format pakietu" podczas korzystania z WebClient.UploadFile() z "https", gdy serwer ma poprawny certyfikat SSL

„System.IO.IOException: uścisk dłoni powiodło się z powodu nieoczekiwanego formatu pakietowych”

Ten sam kod działa perfekcyjnie http ale serwer, który próbuję trafić ma doskonały certyfikat ssl. Oto coś odpowiednie do rozmowy internetowej:

var url = WebServiceCommunication.GetProtocolName() + "..."; //turns out to be  "https://... 
var wc = new WebClient(); 
//I am adding: 
wc.Headers.Add(HttpRequestHeader.KeepAlive, "...") 
wc.Headers.Add(HttpRequestHeader.AcceptLanguage, "...") 
we.Headers.Add(HttpRequestHeader.Cookie, "...") 

wc.UploadFile(url, "POST", filename); 

Czy problem z którymś z HttpRequestHeaders dodaję i korzystania z tych https? Czy też brakuje mi koniecznego nagłówka, jeśli chcę korzystać z https? Czy ktoś ma jakieś wskazówki, dlaczego to działałoby z HTTP, ale NIE HTTPS, gdy certyfikat SSL jest ważny?

+0

podobny błąd w [ System.IO.IOException: Handshake nie powiodło się z powodu nieoczekiwanego> formatu pakietu?] (// stackoverflow.com/q/5178757) –

Odpowiedz

14

Musisz upewnić port łączysz się to port 443 zamiast portu 80.

Przykład jawnie ustawienie portu do użycia w adresie URL:

var request = (HttpWebRequest) WebRequest.Create("https://example.com:443/"); 
request.Method = "GET"; 
request.UserAgent = "example/1.0"; 
request.Accept = "*/*"; 
request.Host = "example.com"; 

var resp = (HttpWebResponse) request.GetResponse(); 
+2

Byłeś na miejscu. Poprawiłem ciąg internetowy jako httpS://przykład.com: 80, zanotowałem konfliktowy protokół-80 i adres URL zaczynający się od HTTPS. Błąd nowicjusza. – TheLegendaryCopyCoder

Powiązane problemy