代码之家  ›  专栏  ›  技术社区  ›  gideon

如何使用像https://example.com/send.aspx这样的.net查询https安全的url?msg=嗨

  •  0
  • gideon  · 技术社区  · 14 年前

    我搜索了SO和google,只发现了一些问题,但不幸的是,我的url是银行短信系统的一部分,我得到的只是安全的url。我必须编写一个测试来推送消息,但由于我没有连接到banks局域网,我无法测试或做任何类型的跟踪和错误。

    Url如下所示:

    https://example.com/send.aspx?msg=hi
    

    我在C#中使用windows窗体.net4应用程序。

    如何使用WebClient发布上述url,或者有其他方法。

    我想从其他答案,我需要从银行的人证明,或有选择拒绝使用加密。


    更新 太棒了,多亏尤金我快到了。我用的是网络客户端, like this answer 它不起作用。我把我的代码改成了这个,它成功了:

    static void Main(string[] args)
    {
        ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(allowCert);
        string url = "https://example.com/send.aspx?msg=hi";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream resStream = response.GetResponseStream();
        StreamReader st = new StreamReader(resStream);
        Console.WriteLine(st.ReadToEnd());
        Console.ReadKey();
    }
    
    static bool allowCert(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
    {
        return true;
    }
    

    加分现在为什么它这样工作,这段代码在做什么?(上面写着“我不在乎什么证书是允许的”)

    2 回复  |  直到 8 年前
        1
  •  1
  •   Community CDub    8 年前

    如果以上都是你得到的,那你就不需要发帖了。此请求使用 GET method (described here) . 你把信息放在你的样本中“嗨”的位置。请记住,您需要对消息文本进行编码,以“屏蔽”任何可能被误解的“不安全”字符。最好是用它的十六进制代码替换任何非字母数字字符,格式为%xx,其中xx是十六进制代码的两位数字。

        2
  •  1
  •   ChrisLively    14 年前

    在你的问题的更新中,你所要求的并不明显。

    HttpWebRequest专门用于允许您向远程服务器发出GET/POST/PUT/etc请求。

    allowCert的回调只是告诉.Net不要费心验证证书链。证书无法验证的原因有很多,包括证书已过期,或者链中的某个证书已过期。另一个原因是,发出调用的计算机不信任证书颁发机构。如果银行没有使用知名的CA来支持自己的证书,这是完全可能的。

    就我个人而言,我不会相信一个无法验证的证书。如果这纯粹是为了测试它应该是可以的;但是,如果这是一个生产证书,那么我会开始与银行谈论它。不幸的是,许多银行似乎并不了解安全。