このHTTP Postリクエストを送信する必要があります。
POST https://webapi.com/baseurl/login
Content-Type: application/json
{"Password":"password",
"AppVersion":"1",
"AppComments":"",
"UserName":"username",
"AppKey":"dakey"
}
上記のようにRestClientとPostManでうまく機能します。
私はこれをプログラム的に持っている必要があり、使用するかどうかわからない
これを実現するWebClient、HTTPRequestまたはWebRequest。
問題は、Body Contentをフォーマットし、リクエストとともに上記に送信する方法です。
ここにWebClientのサンプルコードがあります...
private static void Main(string[] args)
{
RunPostAsync();
}
static HttpClient client = new HttpClient();
private static void RunPostAsync(){
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
Inputs inputs = new Inputs();
inputs.Password = "pw";
inputs.AppVersion = "apv";
inputs.AppComments = "apc";
inputs.UserName = "user";
inputs.AppKey = "apk";
var res = client.PostAsync("https://baseuriplus", new StringContent(JsonConvert.SerializeObject(inputs)));
try
{
res.Result.EnsureSuccessStatusCode();
Console.WriteLine("Response " + res.Result.Content.ReadAsStringAsync().Result + Environment.NewLine);
}
catch (Exception ex)
{
Console.WriteLine("Error " + res + " Error " +
ex.ToString());
}
Console.WriteLine("Response: {0}", result);
}
public class Inputs
{
public string Password;
public string AppVersion;
public string AppComments;
public string UserName;
public string AppKey;
}
これはすぐに動作し、(200)OKサーバーと応答で応答します
なぜあなたは自分のJSONを生成するのですか?
JsonNewtonsoftのJSONConvert
を使用します。
JSONオブジェクトの文字列値には、" "
引用符と,
が必要です
Webクライアントではなく、httpクライアントを投稿に使用します。
using (var client = new HttpClient())
{
var res = client.PostAsync("YOUR URL",
new StringContent(JSONConvert.serializeObject(
new { OBJECT DEF HERE },
Encoding.UTF8, "application/json")
);
try
{
res.Result.EnsureSuccessStatusCode();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
送信する前に値をJSONに適切にシリアル化していない。自分で文字列を作成しようとする代わりに、JSON.Netのようなライブラリを使用する必要があります。
次のようなことを行う正しい文字列を取得できます。
var message = JsonConvert.SerializeObject(new {Password = pw, AppVersion = apv, AppComments = acm, UserName = user, AppKey = apk});
Console.WriteLine(message); //Output: {"Password":"password","AppVersion":"10","AppComments":"","UserName":"username","AppKey":"dakey"}