2013-06-03 27 views
14

Bir HTTPS URL ile WebClient.UploadFile kullanmaya çalışıyorum ama bittiSunucu geçerli bir SSL sertifikası olduğunda WebClient.UploadFile() ile "https" ile "Handshake başarısız ... beklenmedik paket biçimi" alma

ile:

aynı kod ama vurmak için çalışıyorum sunucu bir sahiptir Http ile mükemmel çalışıyor "System.IO.IOException el sıkışma nedeniyle beklenmedik bir paket biçimine başarısız oldu" mükemmel ssl sertifikası.

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

Ben ekleyerek VE olanlarla https kullanıyorum HttpRequestHeaders herhangi biriyle sorun var: İşte web aramayla ilgili bir şey mi? Yoksa https kullanmak istiyorsam gerekli bir başlık eksik mi? SSL sertifikası geçerli olduğunda bunun neden HTTP ile çalışacağına, ancak HTTPS ETMEDİĞüne dair herhangi bir işaretçi var mı?

+0

Benzer hata [ System.IO.IOException: El sıkışma beklenmedik bir> paket biçimi nedeniyle başarısız oldu mu?] (// stackoverflow.com/q/5178757) –

cevap

14

Sen yapmak zorunda emin Bağlandığınız liman noktası 443 yerine liman açıkça URL'ye kullanılacak port ayarlama 80.

Örnek geçerli: içinde

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

Yerinde bir yerdeydiniz. Web dizgimi http://example.com:80 olarak kodladım, çakışan protokol-80'i ve HTTPS ile başlayan URL'yi not aldım. Acemi hatası. – TheLegendaryCopyCoder

İlgili konular