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