为WebClient请求设置User-Agent标头

And*_*eiC 63 c# windows-phone-7

为Windows Phone 7的WebClient请求设置User-Agent标头的正确方法是什么?我找到了两个选项,但不确定哪一个是正确的.考虑WebClient对象:

WebClient client = new WebClient();
Run Code Online (Sandbox Code Playgroud)

我看到了2个选项:

  1. 使用以下方式设置User-Agent:

    client.Headers["User-Agent"] = "myUserAgentString";
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用WebHeaderCollection设置User-Agent:

    WebHeaderCollection headers = new WebHeaderCollection();
    headers[HttpRequestHeader.UserAgent] = "userAgentString";
    client.Headers = headers;
    
    Run Code Online (Sandbox Code Playgroud)

你能否告诉我上面两种方法中哪一种是正确的?

Doc*_*oms 101

您可以查看WebClient文档的,增加了一个用户代理给您一个C#示例WebClient,并在这里为Windows Phone的一个样本.

这是C#的示例:

WebClient client = new WebClient ();

// Add a user agent header in case the 
// requested URI contains a query.

client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; " + 
                                  "Windows NT 5.2; .NET CLR 1.0.3705;)");
Run Code Online (Sandbox Code Playgroud)

这是Windows Phone(Silverlight)的示例:

request.Headers["UserAgent"] = "appname";
// OR
request.UserAgent = "appname";
Run Code Online (Sandbox Code Playgroud)


Amb*_*ung 23

我发现WebClient在一次请求后不断删除我的User-Agent标头,我每次都厌倦了设置它.我使用hack通过创建自己的自定义WebClient并覆盖GetWebRequest方法来永久设置User-Agent .希望这可以帮助.

public class CustomWebClient : WebClient
{
    public CustomWebClient(){}

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address) as HttpWebRequest;
        request.UserAgent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0;)";

        //... your other custom code...

        return request;
    }
}
Run Code Online (Sandbox Code Playgroud)


The*_*nis 8

你也可以使用它:

client.Headers.Add(HttpRequestHeader.UserAgent, "My app.");
Run Code Online (Sandbox Code Playgroud)