Gethtml
1.經過調用Httpclient的 GetAsync異步方法 該方法返回一個Task<HttpResponseMessage>對象json
2.經過ReadAsStringAsync 方法獲取請求結果 獲取經過 ReadAsStreamAsync ReadAsByteArrayAsync方法來獲取結果 分別獲取的結果爲Task<string> Task<Stream> Task<byte[]>api
Postapp
1.經過調用Httpclient的 PostAsync異步方法 該方法返回一個Task<HttpResponseMessage>對象異步
2.POST的參數 主要是一個HttpContent 對象 該類爲 抽象類 這裏使用他的實現類 FormUrlEncodedContentasync
3. 讀取結果跟get的同樣url
Form方式spa
1 /// <summary> 2 /// Form 3 /// </summary> 4 public class HttpRequestForm 5 { 6 public static async Task<string> Get(string url) 7 { 8 //const string Url = "http://localhost:3784/api/Product/Test?UserId=772653441&Source=Mgen.Orca"; 9 10 // 設置HttpClientHandler的AutomaticDecompression 11 ////var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip }; 12 13 Uri uri; 14 Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out uri); 15 16 // 建立HttpClient(注意傳入HttpClientHandler) 17 using (var http = new HttpClient()) 18 { 19 // await異步等待迴應 20 var response = await http.GetAsync(uri); 21 22 // await異步讀取最後的JSON(注意此時gzip已經被自動解壓縮了,由於上面的AutomaticDecompression = DecompressionMethods.GZip) 23 var rel = await response.Content.ReadAsStringAsync(); 24 25 // 確保HTTP成功狀態值 26 response.EnsureSuccessStatusCode(); 27 28 return rel; 29 } 30 } 31 32 public static async Task<string> Post(string url, IDictionary<string, string> para) 33 { 34 35 // 設置HttpClientHandler的AutomaticDecompression 36 ////var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip }; 37 Uri uri; 38 Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out uri); 39 40 // 建立HttpClient(注意傳入HttpClientHandler) 41 using (var http = new HttpClient()) 42 { 43 ////設置要的數據格式 44 ////http.DefaultRequestHeaders.Add("Accept", "application/xml"); 45 http.DefaultRequestHeaders.Add("Accept", "application/json"); 46 47 // 使用FormUrlEncodedContent作HttpContent 48 var content = new FormUrlEncodedContent(para); 49 50 // await異步等待迴應 51 var response = await http.PostAsync(uri, content); 52 53 // await異步讀取最後的JSON(注意此時gzip已經被自動解壓縮了,由於上面的AutomaticDecompression = DecompressionMethods.GZip) 54 var rel = await response.Content.ReadAsStringAsync(); 55 56 // 確保HTTP成功狀態值 57 response.EnsureSuccessStatusCode(); 58 59 return rel; 60 } 61 } 62 }
Json方式code
json須要引用一下第三方dll orm
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net.Http; 5 using System.Net.Http.Formatting; 6 using System.Net.Http.Headers; 7 using System.Text; 8 using System.Threading.Tasks; 9 10 namespace ConsoleApplication 11 { 12 /// <summary> 13 /// Json 14 /// </summary> 15 public class HttpRequestJson 16 { 17 private HttpClient client; 18 19 public HttpRequestJson(string baseAddress) 20 { 21 client = new HttpClient(); 22 client.BaseAddress = new Uri(baseAddress); 23 client.DefaultRequestHeaders.Accept.Clear(); 24 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 25 } 26 27 public async Task<TResponse> ExecuteGet<TResponse>(string url) 28 { 29 var ret = client.GetAsync(url).Result; 30 var resp = await ret.Content.ReadAsAsync<TResponse>(); 31 return resp; 32 } 33 34 public async Task<TResponse> ExecuteGet<TResponse, TRequest>(string url, TRequest req) 35 { 36 MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); 37 HttpContent content = new ObjectContent<TRequest>(req, jsonFormatter); 38 39 HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Get, url); 40 message.Content = content; 41 42 var ret = client.SendAsync(message, HttpCompletionOption.ResponseContentRead).Result; 43 var resp = await ret.Content.ReadAsAsync<TResponse>(); 44 return resp; 45 } 46 47 public async Task<TResponse> ExecutePost<TResponse>(string url) 48 { 49 var ret = client.PostAsync(url, null).Result; 50 var resp = await ret.Content.ReadAsAsync<TResponse>(); 51 return resp; 52 } 53 54 public async Task<TResponse> ExecutePost<TResponse, TRequest>(string url, TRequest req) 55 { 56 var ret = client.PostAsJsonAsync(url, req).Result; 57 var resp = await ret.Content.ReadAsAsync<TResponse>(); 58 return resp; 59 } 60 } 61 }
POST 字符串內容
public static async Task<string> Post(string url, string data) { // 設置HttpClientHandler的AutomaticDecompression ////var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip }; Uri uri; Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out uri); // 建立HttpClient(注意傳入HttpClientHandler) using (var http = new HttpClient()) { ////設置要的數據格式 ////http.DefaultRequestHeaders.Add("Accept", "application/xml"); http.DefaultRequestHeaders.Add("Accept", "application/json"); // 使用FormUrlEncodedContent作HttpContent var content = new ByteArrayContent(Encoding.UTF8.GetBytes(data)); // await異步等待迴應 var response = await http.PostAsync(uri, content); // await異步讀取最後的JSON(注意此時gzip已經被自動解壓縮了,由於上面的AutomaticDecompression = DecompressionMethods.GZip) var rel = await response.Content.ReadAsStringAsync(); // 確保HTTP成功狀態值 response.EnsureSuccessStatusCode(); return rel; } }