1. ホーム
  2. c#

[解決済み] C#でWebClientを使用してJSONをURLにPOSTする

2023-02-03 12:10:09

質問

私は、C#に変換する必要があるいくつかのJavaScriptコードを持っています。私のJavaScriptコードは、作成されたウェブサービスにいくつかのJSONをPOSTします。このJavaScriptコードは問題なく動作し、次のようになります。

var vm = { k: "1", a: "2", c: "3", v: "4" };
$.ajax({
  url: "http://www.mysite.com/1.0/service/action",
  type: "POST",
  data: JSON.stringify(vm),
  contentType: "application/json;charset=utf-8",
  success: action_Succeeded,
  error: action_Failed
});

function action_Succeeded(r) {
  console.log(r);
}

function log_Failed(r1, r2, r3) {
  alert("fail");
}

私はこれをC#に変換する方法を考えようとしています。私のアプリは .NET 2.0 を使用しています。私が知る限りでは、次のようなことをする必要があります。

using (WebClient client = new WebClient())
{
  string json = "?";
  client.UploadString("http://www.mysite.com/1.0/service/action", json);
}

この時点で少し行き詰っています。私は何が json がどのように見えるのかがわかりません。コンテンツタイプを設定する必要があるのかどうかがわかりません。コンテンツタイプを設定する必要があるのかどうか、その方法がよくわからない。また、私は UploadData . だから、私は正しいメソッドを使用しているかどうかさえわからないのです。ある意味、データのシリアライズが私の問題なのです。

誰か私に何が足りないのか教えてください。

ありがとうございます。

どのように解決するのですか?

あなたのコンテンツをパースするためにjsonシリアライザが必要です、おそらくすでに持っています。 リクエストを作成する方法についての最初の質問については、これはアイデアかもしれません。

var baseAddress = "http://www.example.com/1.0/service/action";

var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress));
http.Accept = "application/json";
http.ContentType = "application/json";
http.Method = "POST";

string parsedContent = <<PUT HERE YOUR JSON PARSED CONTENT>>;
ASCIIEncoding encoding = new ASCIIEncoding();
Byte[] bytes = encoding.GetBytes(parsedContent);

Stream newStream = http.GetRequestStream();
newStream.Write(bytes, 0, bytes.Length);
newStream.Close();

var response = http.GetResponse();

var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();

は、それが役立つことを願っています。