c# 如何在用户代理中设置符号
c# how to set symbol in useragent
我想使用 HttpClient
像这样设置 useragent
"Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]"
但是useragent不允许使用符号[]
有人知道如何解决这个问题吗?
httpRequestMessage.Headers.Add("User-Agent", "myCustomUserAgent [xx]");
会抛出异常
在 System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index)
在 System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(String name, HeaderStoreItemInfo info, String value)
在 System.Net.Http.Headers.HttpHeaders.Add(String name, String value)
在 Facebook_scan.Form1.<ttt>d__39.MoveNext() 在 D:\c#\Facebook_scan\Facebook_scan\Form1.cs 中: 第 237 行
如果你真的需要这样做...我想你可以使用 TryAddWithoutValidation
如果 HttpClient 过于严格 parsing headers
Returns a value that indicates whether a new header and its values
were added to the HttpHeaders
collection without validating the
provided information.
var funkyUserAgent = "Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]"
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", funkyUserAgent);
// or
var httpRequestMessage = new HttpRequestMessage();
httpRequestMessage.Headers.TryAddWithoutValidation("User-Agent", funkyUserAgent);
注意 :您真的应该检查 return 值 :)
例子
var httpClient = new HttpClient();
var funkyUserAgent = "Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]";
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "https://postman-echo.com/headers");
httpRequestMessage.Headers.TryAddWithoutValidation("User-Agent", funkyUserAgent);
var result = await httpClient.SendAsync(httpRequestMessage);
var content = await result.Content.ReadAsStringAsync();
Console.WriteLine(content);
输出
{
"headers":{
"x-forwarded-proto":"https",
"x-forwarded-port":"443",
"host":"postman-echo.com",
"x-amzn-trace-id":"Root=1-5fcf4709-35d9a93c0e1703920c572b7e",
"user-agent":"Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]"
}
}
我想使用 HttpClient
像这样设置 useragent
"Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]"
但是useragent不允许使用符号[]
有人知道如何解决这个问题吗?
httpRequestMessage.Headers.Add("User-Agent", "myCustomUserAgent [xx]");
会抛出异常
在 System.Net.Http.Headers.HttpHeaderParser.ParseValue(String value, Object storeValue, Int32& index)
在 System.Net.Http.Headers.HttpHeaders.ParseAndAddValue(String name, HeaderStoreItemInfo info, String value)
在 System.Net.Http.Headers.HttpHeaders.Add(String name, String value)
在 Facebook_scan.Form1.<ttt>d__39.MoveNext() 在 D:\c#\Facebook_scan\Facebook_scan\Form1.cs 中: 第 237 行
如果你真的需要这样做...我想你可以使用 TryAddWithoutValidation
如果 HttpClient 过于严格 parsing headers
Returns a value that indicates whether a new header and its values were added to the
HttpHeaders
collection without validating the provided information.
var funkyUserAgent = "Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]"
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", funkyUserAgent);
// or
var httpRequestMessage = new HttpRequestMessage();
httpRequestMessage.Headers.TryAddWithoutValidation("User-Agent", funkyUserAgent);
注意 :您真的应该检查 return 值 :)
例子
var httpClient = new HttpClient();
var funkyUserAgent = "Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]";
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "https://postman-echo.com/headers");
httpRequestMessage.Headers.TryAddWithoutValidation("User-Agent", funkyUserAgent);
var result = await httpClient.SendAsync(httpRequestMessage);
var content = await result.Content.ReadAsStringAsync();
Console.WriteLine(content);
输出
{
"headers":{
"x-forwarded-proto":"https",
"x-forwarded-port":"443",
"host":"postman-echo.com",
"x-amzn-trace-id":"Root=1-5fcf4709-35d9a93c0e1703920c572b7e",
"user-agent":"Dalvik/2.1.0 (Linux; U; Android 5.1.1; YAL-AL10 Build/LMY48Z) [something]"
}
}