gpt4 book ai didi

c# - WPF 上的 PCL HttpWebRequest 用户代理

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:03 25 4
gpt4 key购买 nike

我在我的一个执行大量 WebRequests 的项目中使用 PCL

我必须设置一个 UserAgent,否则我的 API 将不会接受调用。这在 Windows Phone 8 和 Windows 8 中很好,因为 HttpWebRequest 有一个 Headers 属性,所以你可以这样做:

var request = (HttpWebRequest)WebRequest.Create(cUrlLogin);
request.Headers[HttpRequestHeader.UserAgent] = cUserAgent;
request.Headers[HttpRequestHeader.Referer] = cUrlHalo;

但是在Windows Forms和WPF中,我需要使用方法来设置它,之前我这样做:

var request = (HttpWebRequest)WebRequest.Create(cUrlLogin);
request.UserAgent = cUserAgent;
request.Referer = cUrlHalo;

但是 PCL 不允许这样做,当我尝试另一种方式时,它只会抛出错误:

Additional information: The 'User-Agent' header must be modified using the appropriate property or method.

我试过将 WINDOWS_FORMSWPF 放在构建条件中,并使用 .UserAgent/.Referer 围绕设置它放置一个 if 语句,但无济于事.有没有人遇到过这个问题并找到了解决方法?

最佳答案

这是一个迟到的回复,但可能对您或其他访问者仍然有用。函数:

public void SetHeader(HttpWebRequest Request, string Header, string Value) {
// Retrieve the property through reflection.
PropertyInfo PropertyInfo = Request.GetType().GetProperty(Header.Replace("-", string.Empty));
// Check if the property is available.
if (PropertyInfo != null) {
// Set the value of the header.
PropertyInfo.SetValue(Request, Value, null);
} else {
// Set the value of the header.
Request.Headers[Header] = Value;
}
}

这尝试设置一个属性,然后默认为一个标题。使用示例:

// Initialize a new instance of the HttpWebRequest class.
HttpWebRequest Request = WebRequest.Create(Address) as HttpWebRequest;
// Set the value of the user agent.
SetHeader(Request, "User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)");
// Set the value of the referer.
SetHeader(Request, "Referer", Referer.AbsoluteUri);

关于c# - WPF 上的 PCL HttpWebRequest 用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com