HttpClient自动解码编码URI致请求失败,如何保留%22编码值?
问题:HttpClient发送请求时自动解码URL编码的引号导致请求失败
HttpClient似乎不遵循URL编码规则。
var id = Uri.EscapeDataString("\"MyId\""); var uri = new Uri($@"https://www.example.com/{id}").AbsoluteUri; var req = new HttpRequestMessage(HttpMethod.Post, uri);
生成的uri为https://www.example.com/%22MyId%22,格式正确。查看req.RequestUri时,除LocalPath外其他属性均保留正确的%22编码引号。
发送请求:
await httpClient.SendAsync(req);
实际请求地址变为https://www.example.com/"MyId"(编码被解码),导致请求失败。
创建后uri.UserEscaped显示为false。尝试用已弃用的Uri.EscapeUriString转义整个URI,但官方建议使用Uri.EscapeDataString处理参数(已使用)。
尝试过相关解决方案(使用AbsoluteUri),但无效。部分同类问题描述不准确,实际请求确实包含解码后的值,而非仅ToString()方法显示问题,还有部分问题链接已失效。
如何发送保留%22编码引号的请求?
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

