相关疑难解决方法(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万
查看次数

HTTPWebRequest&过了一会儿,400(错误请求)启动

我有一个后台工作线程,它不断地将数据同步到远程服务器或从远程服务器同步数据.当我第一次运行应用程序时,一切似乎都正常.它每30秒发出一次Web请求,数据返回成功.

如果我让模拟器长时间运行,最终请求将因(400)错误请求而失败.所有后续请求都做同样的事情.如果我杀了应用程序并重新启动它...一切都很好.

有人有主意吗?代码如下.

public RestResponse<T> Execute<T>(RestRequest request) {
    var restResponse = new RestResponse<T>();
    var serializer = new JavaScriptSerializer();
    var urlPath = baseUrl + "/" + request.Resource;
    Console.WriteLine("Requesting: " + urlPath);
    var httpRequest = (HttpWebRequest)HttpWebRequest.Create(new Uri(urlPath));

    httpRequest.Headers = request.Headers;
    foreach (string key in clientHeaders.Keys)
        httpRequest.Headers.Add(key, clientHeaders[key]);
    httpRequest.Headers.Add("Accept-Encoding", "gzip,deflate");

    Authenticator.Authenticate(httpRequest);
    httpRequest.Method = request.Method.ToString();       
    HttpWebResponse httpResponse = null;
    try {
        if ((request.Method == Method.POST) && (!request.IsJsonPost))
            SetPostData(httpRequest, request);

        if ((request.Method == Method.POST) && (request.IsJsonPost)){
            SetJsonPostData(httpRequest, request);
        }

        httpResponse = (HttpWebResponse)httpRequest.GetResponse();
        var reader = …
Run Code Online (Sandbox Code Playgroud)

c# mono httpwebrequest xamarin.ios http-status-code-400

7
推荐指数
1
解决办法
6466
查看次数

我可以阻止Uri在WebRequest.Create中取消编码吗?

代码本身并不复杂,它只是不能正常工作:

Uri uri = new Uri("https://www.google.com/webmasters/tools/feeds/sites/http%3A%2F%2Fwww.mydomain.co.uk%2F");
WebRequest.Create(uri);
Run Code Online (Sandbox Code Playgroud)

我从服务器上得到一个"错误请求",经过多次挖掘,发现Uri正在变成

https://www.google.com/webmasters/tools/feeds/sites/http%3A//www.mydomain.co.uk/

这不是我要求的,所以它有一个旋转

有办法阻止这个吗?

c# uri httpwebrequest

3
推荐指数
1
解决办法
779
查看次数