有没有办法在 C# 中传递这个内容类型“application/x-www-form-urlencoded;v=2.0”?
Posted
技术标签:
【中文标题】有没有办法在 C# 中传递这个内容类型“application/x-www-form-urlencoded;v=2.0”?【英文标题】:Is there a way to pass this contenttype "application/x-www-form-urlencoded;v=2.0" in C#? 【发布时间】:2020-05-17 00:41:22 【问题描述】:我正在尝试在 C# 中复制 CURL 中的以下代码。请注意,此代码与 curl 一起正常工作。我正在使用这个https://curl.olsh.me/ 来创建请求。
curl -k -u "默认用户:robotics" -H "Content-Type: application/x-www-form-urlencoded;v=2.0" -d "value=TRUE" "https://localhost/rw/rapid/symbol/RAPID/T_ROB1/EGMDemo/run_egm/data?mastership=implicit"
我已尝试将此命令翻译成 c# 并到达该行时:
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded;v=2.0");
我收到 application/x-www-form-urlencoded;v=2.0 无效的异常。 如何传递此内容类型?如果使用 httpclient 无法实现,还有其他方法吗?
var handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (requestMessage, certificate, chain, policyErrors) => true;
using (var httpClient = new HttpClient(handler))
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://localhost/rw/rapid/symbol/RAPID/T_ROB1/EGMDemo/run_egm/data?mastership=implicit"))
var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("Default User:robotics"));
request.Headers.TryAddWithoutValidation("Authorization", $"Basic base64authorization");
request.Content = new StringContent("value=TRUE");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded;v=2.0");
var response = await httpClient.SendAsync(request);
【问题讨论】:
【参考方案1】:你可以尝试直接使用
request.Content.Headers.Add("Content-Type", "application/x-www-form-urlencoded;v=2.0");
MediaTypeHeaderValue
仅支持为 HTTP/1.1 定义的标准媒体类型
编辑错误:)
【讨论】:
我收到此异常;标题名称使用不正确。确保请求标头与 HttpRequestMessage 对象一起使用,响应标头与 HttpResponseMessage 对象一起使用,内容标头与 HttpContent 对象一起使用 对不起,我错了,是request.Content.Headers.Add("Content-Type", "application/x-www-form-urlencoded;v=2.0");
你应该把这个Header添加到Content
对象以上是关于有没有办法在 C# 中传递这个内容类型“application/x-www-form-urlencoded;v=2.0”?的主要内容,如果未能解决你的问题,请参考以下文章