C#はHttpClientを使用して、データのコンテンツをさまざまな形式のHttpContentで投稿します

1.以下は、最も一般的に使用される4つのタイプです。
(1)、application / x-www-form-urlencoded
これは、POSTを介してデータを送信するための最も一般的な方法です。ブラウザのネイティブフォームでは、enctype属性が設定されていない場合、データは最終的にapplication / x-www-form-urlencodedの形式で送信されます。

ファーストネーム:

苗字:

(2)、multipart / form-dataこれも一般的なPOSTリクエスト方法であり、一般的にファイルのアップロードに使用され、主要なサーバーのサポートも優れています。したがって、フォームを使用してファイルをアップロードするときは、フォームのenctype属性値をmultipart / form-dataにする必要があります。

(3)
応答ヘッダーとしてのapplication / json application / jsonに不慣れはありませんが、実際には、メッセージ本文がシリアル化されたJSON文字列であることをサーバーに通知するために、要求ヘッダーとしても何度も使用されています。 IEのバージョン、基本的にすべてのサポート。JSON.stringify()メソッドをサポートする低バージョンのIEに加えて、サーバーにはJSONを処理する関数もあるため、jsonを使用しても問題はありません。

(4)、text / xml

HttpContentのインスタンスを作成するには、彼の実装クラスを見つける必要があります。いくつかの調査の結果、次の4つが見つかりました。

MultipartFormDataContent、FormUrlEncodedContent、StringContent、StreamContent

上記の要約と比較すると、手がかりが明らかになります。

MultipartFormDataContent =》 multipart / form-data

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

StringContent =》 application / json等

StreamContent =》バイナリ

demo
var jsonParams = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeObject(jsonObj));
                string code = jsonParams.code;
                //string postData = new pastdate(); "client_id=-4A3A-AA5C-F46886D91638&client_secret=E14F7DBE--8427-470CCD4F29E6&grant_type=authorization_code&code=" + code + "&redirect_uri=http://10.10.10.80/webApi_TJ/Pages/Default.html";
                MultipartFormDataContent content = new MultipartFormDataContent();
                //HttpMessageHandler headler = new HttpMessageHandler();
                using (HttpClient client = new HttpClient())
                {
    
    
                    //client.DefaultRequestHeaders.Add("");
                    var values = new[]
                   {
    
    
                            new KeyValuePair<string, string>("client_id", "A98D1F84-15E6-4A3A-AA5C-F46886D91638"),
                            new KeyValuePair<string, string>("client_secret", "E14F7DBE-480E-4000-8427-470CCD4F29E6"),
                            new KeyValuePair<string, string>("grant_type", "authorization_code"),
                            new KeyValuePair<string, string>("code", code),
                            new KeyValuePair<string, string>("redirect_uri", "http://10.67.50.80/webApi_TJ/Pages/Default.html")
                    };
                    using (FormUrlEncodedContent multipartFormDataContent = new FormUrlEncodedContent(values))
                    {
    
    
                        //multipartFormDataContent.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(@"D:\1.txt")), "attchfile", "\"test.jpg\"");                        
                        var requestUri = "http://10.67.38.176:8080/SSO/token";
                        var html = client.PostAsync(requestUri, multipartFormDataContent).Result.Content.ReadAsStringAsync().Result;

                        return new ApiResult() {
    
     status = (int)ApiResult.enum_result.success, message = string.Empty, data = html };
                    }
                }

おすすめ

転載: blog.csdn.net/m0_50623581/article/details/112277115