【问题标题】:C# WebClient OpenRead urlC# WebClient OpenRead url
【发布时间】:2015-04-29 13:49:03
【问题描述】:

所以我有一个使用短链接获取页面的程序(我使用了谷歌网址缩短器)。 为了构建我的示例,我使用了来自 Using WebClient in C# is there a way to get the URL of a site after being redirected?

的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            MyWebClient client = new MyWebClient();
            client.OpenRead("http://tinyurl.com/345yj7x");            
            Uri uri = client.ResponseUri;            
            Console.WriteLine(uri.AbsoluteUri);
            Console.Read();
        }
    }

    class MyWebClient : WebClient
    {
        Uri _responseUri;

        public Uri ResponseUri
        {
            get { return _responseUri; }
        }

        protected override WebResponse GetWebResponse(WebRequest request)
        {
            WebResponse response = base.GetWebResponse(request);
            _responseUri = response.ResponseUri;
            return response;
        }
    }
}

我不明白一件事:当我做client.OpenRead("http://tinyurl.com/345yj7x");时,这会下载url指向的页面?如果这个方法下载页面,我需要一些东西来让我只获取 url,所以如果有一种方法可以只获取一些标题,或者只获取 url,请告诉我。

【问题讨论】:

    标签: c# webclient


    【解决方案1】:

    您只能使用 HEAD 请求获取标头,如下所示:

    var request = WebRequest.Create(sourceUri);
    request.Method = "HEAD";
    
    var response = request.GetResponse();
    if (response != null) {
        // You can now use response.Headers to get header info
    }
    

    【讨论】:

    【解决方案2】:

    创建一个HttpWebRequest 并将AllowAutoRedirect 属性设置为false,然后查看响应中的Location 标头。

    var request = (HttpWebRequest) WebRequest.Create("http://tinyurl.com/345yj7x");
    request.AllowAutoRedirect = false;
    var response = request.GetResponse();
    var location = response.Headers[HttpResponseHeader.Location];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2020-11-29
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2011-05-27
      • 2011-08-22
      相关资源
      最近更新 更多