1

以前は、HTTP 経由で JSON Web サービスを正常に呼び出しましたが、今は HTTPS 経由で JSON POST を作成する必要があります。

HTTP で機能するコードを使用して、呼び出されている URL を https に変更しただけですが、機能しません。

これは私が使用しているコードです...

WebRequest wrGETURL;
wrGETURL = WebRequest.Create("https://apitest.example.com/geo/coverage/v1/?appId=2644571&appKey=836621d715b6ce4db5f007d8fa2214f");
wrGETURL.Method = "POST";
Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream);
string responseFromServer = objReader.ReadToEnd();

フィドラーで表示されているエラーメッセージは次のとおりです。

fiddler.network.https> apitest.example.com の既存の接続を保護できませんでした。SSPI の呼び出しに失敗しました。内部例外を参照してください。InnerException: System.ComponentModel.Win32Exception (0x80004005): クライアントとサーバーは共通のアルゴリズムを持っていないため、通信できません

HTTPS 経由で電話をかけるために必要なことを手伝ってくれる人はいますか?

4

1 に答える 1

1

サーバー証明書の認証またはコールバックが必要ですか? これはほとんどの場合私にとってはうまくいきます:

        var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://someurl/");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";

        // Create NetworkCredential Object 
        NetworkCredential admin_auth = new NetworkCredential("username", "password");

        // Set your HTTP credentials in your request header
        httpWebRequest.Credentials = admin_auth;

        // callback for handling server certificates
        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = "{\"name\":\"TEST_123\"}";
            streamWriter.Write(json); 
            streamWriter.Flush();
            streamWriter.Close();
            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                Console.WriteLine(result);
            }
       }
于 2013-08-06T03:09:00.623 に答える