我想发送一个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编码}
我对其他读物非常开放,但我看不出还有什么意思.
我正在尝试使用查询某些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)