Asp.net-Mvc
HttpClient 傳遞多個簡單參數
我正在嘗試
POST從一個controller到另一個controller。兩者controller都來自不同的項目。一個項目用於模擬表示層(我將這裡稱為測試項目)。從測試項目中,我嘗試將 2 個簡單
string參數傳遞給另一個我將呼叫該過程的控制器。var values = new List<KeyValuePair<string, string>>(); values.Add(new KeyValuePair<string, string>("id", param.Id.Value)); values.Add(new KeyValuePair<string, string>("type", param.Type.Value)); var content = new FormUrlEncodedContent(values); using (var client = new HttpClient()) { client.BaseAddress = new Uri(url); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("nl-NL")); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string token = param.token.Value; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = client.PostAsync("/api/Process/Product", content).Result; if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return Request.CreateResponse(HttpStatusCode.OK, result); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "fail"); }在過程控制器中,我試圖像這樣接收它:
[HttpPost] public HttpResponseMessage Product(string id, string type) { return null; }但它從來沒有達到這個
controller。我總是收到“未找到狀態程式碼”。那麼我怎樣才能傳遞 2 個簡單的參數
HttpClient()呢?
對於簡單的類型參數,使用 Get 而不是 Post。
using (var client = new HttpClient()) { BaseAddress = new Uri(url); client.BaseAddress = new Uri(url); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("nl-NL")); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string token = param.token.Value; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); // New code: var response = await client.GetAsync( string.format("api/products/id={0}&type={1}",param.Id.Value,param.Id.Type) ); if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return Request.CreateResponse(HttpStatusCode.OK, result); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "fail"); }在 API 方面,您可以這樣做。
[HttpGet] public HttpResponseMessage Product(string id, string type) { return null; }