HttpClient get post

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;
            }
        }

 

4.5之前寫法

相關文章
相關標籤/搜索