首页 > 解决方案 > 如何从 c# mvc 控制器调用具有多个 json 参数的 API

问题描述

我想从控制器调用 WebAPI。我也想从控制器传递多个 json 参数。那么,如何将这些数据与 api 绑定呢?

 var jsonData = "{\"jsonrpc\":2.0," +
                "\"method\":eth_blockNumber," +
                "\"params\":[]," +
                "\"id\":83}";

HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(string.Format("https://mainnet.infura.io/qhggowRXK7HIgXB0NEyw",jsonData));
webreq.Method = "POST";
webreq.ContentType = "application/json";
using (var streamWriter = new StreamWriter(webreq.GetRequestStream()))
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    //var resToWrite = serializer.Deserialize<Dictionary<string, object>>(jsonData);
    //streamWriter.Write(jsonData);
    streamWriter.Flush();
    streamWriter.Close();
}
WebResponse response = webreq.GetResponse();
var streamReader = new StreamReader(response.GetResponseStream());
var result = streamReader.ReadToEnd();

标签: c#asp.net-web-api

解决方案


您可以使用 HttpClient:

private static readonly HttpClient client = new HttpClient();
var values = new Dictionary<string, string>
{
   { "param1", "value1" },
   { "param2", "value2" }
};
*var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync("https://mainnet.infura.io/qhggowRXK7HIgXB0NEyw", content);
var responseString = await response.Content.ReadAsStringAsync();

或者,如果您使用的不是 NET 4.5 或更高版本,WebClient:

using (var client = new WebClient())
{
    var values = new NameValueCollection();
    values["thing1"] = "hello";
    values["thing2"] = "world";

    var response = client.UploadValues("http://www.example.com/recepticle.aspx", values);

    var responseString = Encoding.Default.GetString(response);
}

推荐阅读