国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#中通過HttpClient發(fā)送Post請求

這篇具有很好參考價值的文章主要介紹了C#中通過HttpClient發(fā)送Post請求。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C#中HttpClient進行各種類型的傳輸

C#中通過HttpClient發(fā)送Post請求

我們可以看到, 盡管PostAsync有四個重載函數(shù), 但是接受的都是HttpContent, 而查看源碼可以看到, HttpContent是一個抽象類

那我們就不可能直接創(chuàng)建HttpContent的實例, 而需要去找他的實現(xiàn)類, 經(jīng)過一番研究, 發(fā)現(xiàn)了, 如下四個:

MultipartFormDataContent、FormUrlEncodedContent、StringContent、StreamContent

和上面的總結(jié)進行一個對比就能發(fā)現(xiàn)端倪:

MultipartFormDataContent=》multipart/form-data

FormUrlEncodedContent=》application/x-www-form-urlencoded

StringContent=》application/json等

StreamContent=》binary

而和上面總結(jié)的一樣FormUrlEncodedContent只是一個特殊的StringContent罷了, 唯一不同的就是在mediaType之前自己手動進行一下URL編碼罷了(這一條純屬猜測, 邏輯上應(yīng)該是沒有問題的).

c# 使用HttpClient的post,get方法傳輸json

————————————————

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Timers;
using Newtonsoft.Json;
using System.Net.Http;
using System.IO;
using System.Net;
public class user
        {
            public string password;//密碼hash
            public string account;//賬戶
        }

        static async void TaskAsync()
        {

            
            using (var client = new HttpClient())
            {
                
                try
                {
                    //序列化
                    user user = new user();
                    user.account = "zanllp";
                    user.password = "zanllp_pw";
                    var str = JsonConvert.SerializeObject(user);

                    HttpContent content =new StringContent(str);
                    content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                    HttpResponseMessage response = await client.PostAsync("http://255.255.255.254:5000/api/auth", content);//改成自己的
                    response.EnsureSuccessStatusCode();//用來拋異常的
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
                catch (Exception e)
                {
                    Console.WriteLine("\nException Caught!");
                    Console.WriteLine("Message :{0} ", e.Message);
                }
            }

            using (HttpClient client = new HttpClient())
            {
                try
                {
                    HttpResponseMessage response = await client.GetAsync("http://255.255.255.254:5000/api/auth");
                    response.EnsureSuccessStatusCode();//用來拋異常的
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
                catch (HttpRequestException e)
                {
                    Console.WriteLine("\nException Caught!");
                    Console.WriteLine("Message :{0} ", e.Message);
                }
            }
        }
 static void Main(string[] args)
        {
            TaskAsync();
            
            Console.ReadKey();
        }
 
在阿里云上的.Net Core on Linux

自己封裝的類,我?guī)缀跛械膫€人項目都用這個
using ICSharpCode.SharpZipLib.GZip;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

/// <summary>
/// 基于HttpClient封裝的請求類
/// </summary>
public class HttpRequest
{
    /// <summary>
    /// 使用post方法異步請求
    /// </summary>
    /// <param name="url">目標(biāo)鏈接</param>
    /// <param name="json">發(fā)送的參數(shù)字符串,只能用json</param>
    /// <returns>返回的字符串</returns>
    public static async Task<string> PostAsyncJson(string url, string json)
    {
        HttpClient client = new HttpClient();
        HttpContent content = new StringContent(json);
        content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
        HttpResponseMessage response = await client.PostAsync(url, content);
        response.EnsureSuccessStatusCode();
        string responseBody = await response.Content.ReadAsStringAsync();
        return responseBody;
    }

    /// <summary>
    /// 使用post方法異步請求
    /// </summary>
    /// <param name="url">目標(biāo)鏈接</param>
    /// <param name="data">發(fā)送的參數(shù)字符串</param>
    /// <returns>返回的字符串</returns>
    public static async Task<string> PostAsync(string url, string data, Dictionary<string, string> header = null, bool Gzip = false)
    {
        HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false });
        HttpContent content = new StringContent(data);
        if (header != null)
        {
            client.DefaultRequestHeaders.Clear();
            foreach (var item in header)
            {
                client.DefaultRequestHeaders.Add(item.Key, item.Value);
            }
        }
        HttpResponseMessage response = await client.PostAsync(url, content);
        response.EnsureSuccessStatusCode();
        string responseBody = "";
        if (Gzip)
        {
            GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync());
            responseBody = new StreamReader(inputStream).ReadToEnd();
        }
        else
        {
            responseBody = await response.Content.ReadAsStringAsync();

        }
        return responseBody;
    }

    /// <summary>
    /// 使用get方法異步請求
    /// </summary>
    /// <param name="url">目標(biāo)鏈接</param>
    /// <returns>返回的字符串</returns>
    public static async Task<string> GetAsync(string url, Dictionary<string, string> header = null, bool Gzip = false)
    {

        HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false });
        if (header != null)
        {
            client.DefaultRequestHeaders.Clear();
            foreach (var item in header)
            {
                client.DefaultRequestHeaders.Add(item.Key, item.Value);
            }
        }
        HttpResponseMessage response = await client.GetAsync(url);
        response.EnsureSuccessStatusCode();//用來拋異常的
        string responseBody = "";
        if (Gzip)
        {
            GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync());
            responseBody = new StreamReader(inputStream).ReadToEnd();
        }
        else
        {
            responseBody = await response.Content.ReadAsStringAsync();

        }
        return responseBody;
    }

    /// <summary>
    /// 使用post返回異步請求直接返回對象
    /// </summary>
    /// <typeparam name="T">返回對象類型</typeparam>
    /// <typeparam name="T2">請求對象類型</typeparam>
    /// <param name="url">請求鏈接</param>
    /// <param name="obj">請求對象數(shù)據(jù)</param>
    /// <returns>請求返回的目標(biāo)對象</returns>
    public static async Task<T> PostObjectAsync<T, T2>(string url, T2 obj)
    {
        String json = JsonConvert.SerializeObject(obj);
        string responseBody = await PostAsyncJson(url, json); //請求當(dāng)前賬戶的信息
        return JsonConvert.DeserializeObject<T>(responseBody);//把收到的字符串序列化
    }

    /// <summary>
    /// 使用Get返回異步請求直接返回對象
    /// </summary>
    /// <typeparam name="T">請求對象類型</typeparam>
    /// <param name="url">請求鏈接</param>
    /// <returns>返回請求的對象</returns>
    public static async Task<T> GetObjectAsync<T>(string url)
    {
        string responseBody = await GetAsync(url); //請求當(dāng)前賬戶的信息
        return JsonConvert.DeserializeObject<T>(responseBody);//把收到的字符串序列化
    }
}
————————————————
版權(quán)聲明:本文為CSDN博主「luckyone906」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011555996/article/details/116721769

C# 使用 HttpClient 進行http GET/POST請求文章來源地址http://www.zghlxwxcb.cn/news/detail-433250.html

using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
namespace HTTPRequest
{
    class Program
    {
        static void Main(string[] args)
        {
           
            HttpClient httpClient = new HttpClient();
            Task<byte[]> task0= httpClient.GetByteArrayAsync("http://127.0.0.1");
            task0.Wait();
           // while (!task0.IsCompletedSuccessfully) { };
            byte[] bresult=task0.Result;
            string sresult = System.Text.Encoding.Default.GetString(bresult);
            Console.WriteLine(sresult);
          //  Console.ReadLine();
            -------
            HttpClient httpClient0 = new HttpClient();
            List<KeyValuePair<string, string>> param = new List<KeyValuePair<string, string>>();
            param.Add(new KeyValuePair<string, string>("xx", "xx"));
           Task<HttpResponseMessage> responseMessage  =httpClient0.PostAsync("http://localhost:1083/Home/Test", new FormUrlEncodedContent(param));
            responseMessage.Wait();
           Task<string> reString= responseMessage.Result.Content.ReadAsStringAsync();
            reString.Wait();
            Console.WriteLine(reString.Result);
            Console.ReadLine();
 
        }
    }
}
————————————————
版權(quán)聲明:本文為CSDN博主「luckyone906」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011555996/article/details/116721769

到了這里,關(guān)于C#中通過HttpClient發(fā)送Post請求的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue使用axios發(fā)送post請求攜帶json body參數(shù),后端使用@RequestBody進行接收

    vue使用axios發(fā)送post請求攜帶json body參數(shù),后端使用@RequestBody進行接收

    最近在做自己項目中,做一個非常簡單的新增用戶場景,但是使用原生axios發(fā)送post請求的時候,還是踩了不少坑的。 唉,說多了都是淚,小小一個新增業(yè)務(wù),在自己前后端一起開發(fā)的時候,硬是搞了好久。 下面就把問題總結(jié)分享下,防止后人再踩坑。 首先先看下我的接口定

    2024年02月02日
    瀏覽(24)
  • C語言通過IXMLHTTPRequest以get或post方式發(fā)送http請求獲取服務(wù)器文本或xml數(shù)據(jù)

    C語言通過IXMLHTTPRequest以get或post方式發(fā)送http請求獲取服務(wù)器文本或xml數(shù)據(jù)

    做過網(wǎng)頁設(shè)計的人應(yīng)該都知道ajax。 Ajax即Asynchronous Javascript And XML(異步的JavaScript和XML)。使用Ajax的最大優(yōu)點,就是能在不更新整個頁面的前提下維護數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地回應(yīng)用戶動作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變的信息。 在IE瀏覽器中,Ajax技術(shù)就是

    2024年01月25日
    瀏覽(26)
  • C# 通過 HttpWebRequest發(fā)送數(shù)據(jù)以及服務(wù)器通過Request請求獲取數(shù)據(jù)

    C# 通過 HttpWebRequest發(fā)送數(shù)據(jù)以及服務(wù)器通過Request請求獲取數(shù)據(jù)

    C#中HttpWebRequest的用法詳解 可參考: C#中HttpWebRequest的用法詳解 C# HttpWebRequest詳解 C# 服務(wù)器通過Request獲取參數(shù) 可參考: C# WebService 接口 通過Request請求獲取json參數(shù) 1、后臺程序發(fā)送HTTP請求的Class,服務(wù)器端也要添加該類 2、服務(wù)端返回HTTP請求的數(shù)據(jù)class,客戶端也要有 1、后臺

    2024年02月06日
    瀏覽(22)
  • HTTP POST接口帶參數(shù)的HttpClient請求方法和調(diào)用

    HTTP POST接口帶參數(shù)的HttpClient請求方法和調(diào)用

    接口自動化測試,今天遇到POST接口帶參數(shù),參數(shù)在url上,發(fā)現(xiàn)原來的工具類中沒有該方法,重新調(diào)試加上。 ?doPost方法如下: 參考: [Java 接口自動化框架]httpclient4.5.3(CloseableHttpClient) https的工具類HttpsClientUtils

    2024年02月06日
    瀏覽(19)
  • Java HttpClient 實戰(zhàn) GET 與 POST 請求一網(wǎng)打盡

    在Java中, HttpClient 是進行HTTP通信的一個強大工具。它提供了簡單而靈活的API,可以輕松地發(fā)送HTTP請求并處理響應(yīng)。在本篇博文中,我們將深入探討如何使用 HttpClient 執(zhí)行GET、POST等不同類型的HTTP請求。 首先,確保在項目的 pom.xml 文件中引入 HttpClient 的依賴: 讓我們從一個簡

    2024年01月17日
    瀏覽(25)
  • libcurl是一個用于進行網(wǎng)絡(luò)通信的開源庫,提供了各種功能和選項,可以用于發(fā)送和接收HTTP請求、FTP操作等

    libcurl是一個用于進行網(wǎng)絡(luò)通信的開源庫,提供了各種功能和選項,可以用于發(fā)送和接收HTTP請求、FTP操作、SMTP郵件等。它支持多種協(xié)議,包括HTTP、HTTPS、FTP、FTPS、SMTP、POP3、IMAP等。 以下是libcurl庫的一些特點和功能: 跨平臺:libcurl可在多個操作系統(tǒng)上使用,包括Windows、Lin

    2024年01月19日
    瀏覽(22)
  • Java發(fā)起Post 、Get 各種請求整合

    java發(fā)起get請求和post請求的各種情況整合。具體看代碼以及注釋。其中Constants.UTF8本質(zhì)是指\\\"UTF-8\\\"

    2024年02月04日
    瀏覽(16)
  • 云函數(shù)發(fā)送post請求

    1、新建云函數(shù) 2、在云函數(shù)目錄,右鍵-外部終端 3、npm install got@10 注意要控制版本 4、云函數(shù)上傳后,在云開發(fā)配置-高級配置,修改超時時間到更長 5、請求內(nèi)容 const cloud = require(\\\'wx-server-sdk\\\') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用當(dāng)前云環(huán)境 const got = require(\\\'got\\\') // 云函數(shù)

    2023年04月11日
    瀏覽(21)
  • 在postman中使用raw純文本格式發(fā)送POST請求成功而在python爬蟲中發(fā)送POST請求失敗

    在postman中使用raw純文本格式發(fā)送POST請求成功而在python爬蟲中發(fā)送POST請求失敗

    在postman中是成功的 我查了很多資料,說raw是純文本格式提交的,我又去看postman中的headers,查看content-Type中指定了格式 修改了爬蟲中的headers 或者把data寫出字典格式,再用json.dumps(data)轉(zhuǎn)換一下

    2024年02月12日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包