Web Services 通过HTTPS发布JSON

hgc7kmma  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(120)

在过去,我已经成功地通过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中看到的错误消息是:
无法保护apitest.example.com的现有连接。调用SSPI失败,请参阅内部异常。InnerException:系统出现异常(0x80004005):客户端和服务器无法通信,因为它们不具有通用算法
有人能帮我做我需要做的通过HTTPS打电话吗?

rkkpypqq

rkkpypqq1#

您是否需要验证或回调服务器证书?在大多数情况下,这对我都适用:

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

abithluo2#

我正在使用React和Expressjs,遇到了这个问题。发送您的ie:https://www.google.com,而不使用https:
我的router.js的一部分

router('/vod')
    .rout.get('/vod', (req,res)=>{
    res.send({message: "//www.google.com"});

App.js

function App() {
    const [vod, setVod] = React.useState(null);
    
    React.useEffect(() => {
            fetch("/vod")
                .then((res) => res.json())
                .then((vod) => setVod(vod.message));
        },
        []);

    return (

        <div className="App">
            <header className="App-header">
                <iframe src={"https:"+vod} 
   id="myIframe" autoPlay width={1000} height= 
   {500} frame></iframe>
            </header>
        </div>

    );

在iframe中更改源代码时,我使用{“https:“+vod}来模拟完整的url。
在您情况下,请尝试合并您的“结果”,如(“https:“+result)
我注意到詹森一把抓住了:把绳子弄乱了。

相关问题