インタフェースを介してデータをコミットするには、Content-typeはアプリケーション/x-www-form-urlencodedですか、アプリケーション/jsonですか.


POST方式でインタフェースにデータを提出するとき、よくこのような文に遭遇します.
webClient.Headers.Add("Content-Type", "application/json");

または
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

それはいったいどんな方法を使うべきですか.
答えは私たちが提出したパラメータフォーマットと関係があります.
ページフォームで提出された場合、"application/x-www-form-urlencoded"です.json(文字列に逆シーケンス化する)の場合、"application/json"です."application/x-www-form-urlencoded"の場合、そのパラメータ組織形式は、キー値ペアであり、get方式に似たパラメータ形式:name= &sex= &tel=5354169であるが、jsonはよく知られている.
{
	name:"  ",
	sex:" ",
	tel:"5354169",
}

したがって、渡されたパラメータがjsonで、あなたが宣言したヘッダが"application/x-www-form-urlencoded"であるか、またはこの「Content-Type」(デフォルトでは「アプリケーション/x-www-form-urlencoded」)を宣言していない場合、サーバはコミットされたデータを取得できません.データは伝わったが、読めなかった.
逆も同じはずだ.
2018.7.20また、提出されたデータに漢字が含まれている場合、コードがサーバと異なる場合、サーバが提出されたデータを受信できない可能性もあります.
2019.06.20のフォーマットは、サーバ側にも関係する可能性があります.今日はJSONではだめで、キー値で提出しなければなりません.JSONを使用すると、相手はエラーを返します.
            :                 
"application/x-www-form-urlencoded"に変更すると正常です.道理で、両方ともできるはずです.私たちは前に何度も試したことがあります.
類似コード:
        string postData = "value=a";
        byte[] bytes = Encoding.UTF8.GetBytes(postData);
        WebClient client = new WebClient();
        client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        client.Headers.Add("ContentLength", postData.Length.ToString());
        Encoding enc = Encoding.GetEncoding("UTF-8");
        byte[] responseData = client.UploadData("http://localhost:28450/api/values", "POST", bytes);
        string re = enc.GetString(responseData);