Получение "Рукопожатия не удалось... неожиданного формата пакета" при использовании WebClient.UploadFile() с "https", когда у сервера есть действительный сертификат SSL

Я пытаюсь использовать WebClient.UploadFile с URL-адресом HTTPS, но я заканчиваю

"System.IO.IOException: рукопожатие не выполнено из-за неожиданного формат пакета"

Тот же код отлично работает с Http, но сервер, на который я пытаюсь попасть, имеет совершенно прекрасный сертификат ssl. Вот что имеет отношение к веб-вызову:

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

Является ли проблема с любым из HttpRequestHeaders, который я добавляю и использую https с этими? Или мне не хватает необходимого заголовка, если я хочу использовать https? Кто-нибудь имеет какие-либо указания относительно того, почему это будет работать с HTTP, но не HTTPS, когда сертификат SSL действителен?

Ответ 1

Вы должны убедиться, что порт, к которому вы подключаетесь, - это порт 443 вместо порта 80.

Пример явной настройки порта, который будет использоваться в 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();