相关疑难解决方法(0)

使用url编码的斜杠获取URL

我想发送一个HTTP GET http://example.com/%2F.我的第一个猜测是这样的:

using (WebClient webClient = new WebClient())
{
  webClient.DownloadData("http://example.com/%2F");
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我可以看到实际上在线上发送的是:

GET // HTTP/1.1
Host: example.com
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)

因此http://example.com/%2F在传输之前会被翻译成http://example.com //.

有没有办法实际发送此GET请求?

当使用OCSP over HTTP/GET时,OCSP协议要求发送base-64编码的url编码,因此必须发送实际的%2F而不是'/'才能兼容.

编辑:

以下是OCSP协议标准(RFC 2560附录A.1.1)的相关部分:

使用GET方法的OCSP请求构造如下:

GET {url}/{对OCSPRequest的DER编码的base-64编码的url编码}

我对其他读物非常开放,但我看不出还有什么意思.

.net c# base64 http url-encoding

35
推荐指数
3
解决办法
3万
查看次数

远程服务器(403)使用WebClient时出现禁止错误

我正在尝试使用查询某些URL WebClient.

我有一个集合,我循环来获取QueryString值,并构建最终的URL,然后将其传递给客户端.

它第一次执行得很好,我得到了适当的响应,然而,当它第二次进入循环时,我得到错误:

System.Net.WebException - >远程服务器返回错误:(403)Forbidden.

如果我第一次得到回复.然后我也应该得到其余的收藏品.

有什么线索的原因?我可能会缺少什么?

以下是我正在使用的代码段.

 using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\sample.text")) {
    foreach(var f in fileCollections) {
        strFinalURL = string.Empty;

        strFinalURL = "someURL" + f; // f can be considered as querystring param value

        try {
            using(var client = new WebClient()) {

                test = client.DownloadString(strFinalURL);
                if (!test.Contains("somecondition")) {
                    file.WriteLine("");
                }
            }
        } catch (System.Exception ex) {
            Console.WriteLine(ex.Message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# webclient webclient-download

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

.net ×1

base64 ×1

http ×1

url-encoding ×1

webclient ×1

webclient-download ×1