0
我需要将GET请求的Accept头设置为具有诸如application/json; model=v2
等参数的媒体类型。试图利用MediaTypeWithQualityHeaderValue
结果在FormatException
与Message设置一个接受类型,它有一个参数
“的值的格式‘应用/ JSON;模型= V3’是无效的”。
WebRequestHandler handler = new WebRequestHandler();
handler.ClientCertificates.Add(cert);
HttpClient c = new HttpClient(handler);
// throws below
c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json; model=v3"));
string json = await c.GetStringAsync("https://localhost:44303/config.svc/clients/18.1.2.1");
这种方法利用HttpWebRequest
时在接受头是一个字符串作品不够好。是否有可能强制HttpClient接受该值作为有效的Accept头。
更新
的参数无法通过构造而是通过在构建实例的Parameters属性设置。
var mediaType = new MediaTypeWithQualityHeaderValue("application/json");
mediaType.Parameters.Add(new NameValueHeaderValue("model","v3"));
做你看看MSDN文档:在[MediaTypeWithQualityHeaderValue(https://msdn.microsoft.com/en-us/library/system.net.http.headers.mediatypewithqualityheadervalue(V = vs.118 ).aspx)2重载1接受一个字符串,另一个接受一个字符串和一个双..只用'(“application/json”)试试' – MethodMan
double是值限定符,用于协商如果客户端使用哪种类型和服务器有不止一个,他们都支持。即是的,XML将工作,但JSON是首选。 – Tedford
@MethodMan关于文档的好处,虽然我错过了[参数](https://msdn.microsoft.com/en-us/library/system.net.http.headers.mediatypeheadervalue.parameters(v = vs.118) .aspx)构造的'MediaTypeWithQualityHeaderValue'实例的属性 – Tedford