2013-06-03 9 views
14

Sto cercando di utilizzare WebClient.UploadFile con un URL HTTPS ma sto finendo conOttenere "Handshake non riuscito ... formato pacchetto inaspettato" quando si utilizza WebClient.UploadFile() con "https" quando il server ha un certificato SSL valido

"System.IO.IOException: la stretta di mano non è riuscita a causa di un inaspettato formato pacchetto"

lo stesso codice funziona perfettamente bene con HTTP, ma il server che sto cercando di colpire ha un certificato ssl perfettamente valido. Ecco qualcosa di rilevante per la chiamata web:

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); 

è la questione con uno qualsiasi dei HttpRequestHeaders Io sono l'aggiunta e l'utilizzo di HTTPS con quelli? O mi manca un'intestazione necessaria se voglio usare https? Qualcuno ha qualche indicazione sul perché questo funzionerebbe con HTTP ma NON con HTTPS quando il certificato SSL è valido?

+0

errore simile a [ System.IO.IOException: l'handshake non è riuscito a causa di un imprevisto> formato di pacchetto?] (// stackoverflow.com/q/5178757) –

risposta

14

è necessario assicurarsi che la porta ci si connette a porta 443 è invece di porta 80.

Esempio di impostazione in modo esplicito la porta da utilizzare nell'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

Sei stato azzeccato. Avevo hardcoded la mia stringa web come httpS://example.com:80, si noti il ​​protocollo in conflitto-80 e l'url che inizia con HTTPS. Errore Rookie. – TheLegendaryCopyCoder

Problemi correlati