インタフェースを介してデータをコミットするには、Content-typeはアプリケーション/x-www-form-urlencodedですか、アプリケーション/jsonですか.
POST方式でインタフェースにデータを提出するとき、よくこのような文に遭遇します.
または
それはいったいどんな方法を使うべきですか.
答えは私たちが提出したパラメータフォーマットと関係があります.
ページフォームで提出された場合、
したがって、渡されたパラメータがjsonで、あなたが宣言したヘッダが
逆も同じはずだ.
2018.7.20また、提出されたデータに漢字が含まれている場合、コードがサーバと異なる場合、サーバが提出されたデータを受信できない可能性もあります.
2019.06.20のフォーマットは、サーバ側にも関係する可能性があります.今日はJSONではだめで、キー値で提出しなければなりません.JSONを使用すると、相手はエラーを返します.
類似コード:
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);