31

HTTPS URL で WebClient.UploadFile を使用しようとしていますが、最終的には

「System.IO.IOException: 予期しないパケット形式のため、ハンドシェイクが失敗しました」

同じコードは Http でも問題なく動作しますが、ヒットしようとしているサーバーには完全に問題のない ssl 証明書があります。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);

私が追加している HttpRequestHeaders に問題があり、それらで https を使用していますか? または、https を使用する場合に必要なヘッダーがありませんか? SSL証明書が有効な場合、これがHTTPでは機能するがHTTPSでは機能しない理由について、誰かが何かポインタを持っていますか?

4

2 に答える 2

43

接続先のポートがポート 80 ではなくポート 443 であることを確認する必要があります。

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();
于 2014-02-01T16:50:19.303 に答える