C# 如何将json发送到web api?

C# 如何将json发送到web api?,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我想将json从MVC应用程序中的控制器提交到Web API应用程序 在Web API应用程序中,其中一个控制器方法采用字符串: //In ValuesController.cs [HttpGet("{myjson}")] public string Index (string myjson) { ... } 如果我尝试url,它将进入: [HttpGet("{id}")] public string Get (int id) { ... } 也位于ValuesController.c

我想将json从MVC应用程序中的控制器提交到Web API应用程序

在Web API应用程序中,其中一个控制器方法采用字符串:

//In ValuesController.cs
[HttpGet("{myjson}")]
public string Index (string myjson) {
  ...
}
如果我尝试url,它将进入:

[HttpGet("{id}")]
public string Get (int id) {
 ...
}
也位于ValuesController.cs中


知道为什么第一个方法没有触发吗?

您可以使用库将JSON序列化和反序列化为对象。您可以使用库将JSON序列化和反序列化为对象。您可以使用库将JSON序列化和反序列化为对象。您可以使用库将JSON序列化和反序列化为对象。非常擅长于这样做。

请查看。如果您将端点更改为接受
,我认为您可以这样做:

var myClass = new JsonSerializer()
                  .Deserialize<MyClass>(
                    new JsonTextReader(
                      new StreamReader(stream, Encoding.UTF8, false, 1, true)));
var myClass=new JsonSerializer()
.反序列化(
新JsonTextReader(
新的StreamReader(stream,Encoding.UTF8,false,1,true));
退房。如果您将端点更改为接受
,我认为您可以这样做:

var myClass = new JsonSerializer()
                  .Deserialize<MyClass>(
                    new JsonTextReader(
                      new StreamReader(stream, Encoding.UTF8, false, 1, true)));
var myClass=new JsonSerializer()
.反序列化(
新JsonTextReader(
新的StreamReader(stream,Encoding.UTF8,false,1,true));
退房。如果您将端点更改为接受
,我认为您可以这样做:

var myClass = new JsonSerializer()
                  .Deserialize<MyClass>(
                    new JsonTextReader(
                      new StreamReader(stream, Encoding.UTF8, false, 1, true)));
var myClass=new JsonSerializer()
.反序列化(
新JsonTextReader(
新的StreamReader(stream,Encoding.UTF8,false,1,true));
退房。如果您将端点更改为接受
,我认为您可以这样做:

var myClass = new JsonSerializer()
                  .Deserialize<MyClass>(
                    new JsonTextReader(
                      new StreamReader(stream, Encoding.UTF8, false, 1, true)));
var myClass=new JsonSerializer()
.反序列化(
新JsonTextReader(
新的StreamReader(stream,Encoding.UTF8,false,1,true));

您可以在查询字符串上构建包含
MyClass
属性的URL,并使用HttpClient(或第三方选项,如RestSharp)调用远程客户端

此外,您需要使用
[FromUri]
标记您的WebAPI端点方法,以便它知道从查询字符串而不是从请求体中期望复杂类型

[HttpGet("/")]
public string Index ([FromUri] MyClass aclass) {
    ...
}

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://.../");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var url = String.Format("api/ControllerName?ID={0}&Dept={1}", 
        myModel.ID, myModel.Dept);

    HttpResponseMessage response = await client.GetAsync(url);
    if (response.IsSuccessStatusCode)
    {
        MyModel model = await response.Content.ReadAsAsync<MyModel>();
    }
}

您可以在查询字符串上构建包含
MyClass
属性的URL,并使用HttpClient(或第三方选项,如RestSharp)调用远程客户端

此外,您需要使用
[FromUri]
标记您的WebAPI端点方法,以便它知道从查询字符串而不是从请求体中期望复杂类型

[HttpGet("/")]
public string Index ([FromUri] MyClass aclass) {
    ...
}

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://.../");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var url = String.Format("api/ControllerName?ID={0}&Dept={1}", 
        myModel.ID, myModel.Dept);

    HttpResponseMessage response = await client.GetAsync(url);
    if (response.IsSuccessStatusCode)
    {
        MyModel model = await response.Content.ReadAsAsync<MyModel>();
    }
}

您可以在查询字符串上构建包含
MyClass
属性的URL,并使用HttpClient(或第三方选项,如RestSharp)调用远程客户端

此外,您需要使用
[FromUri]
标记您的WebAPI端点方法,以便它知道从查询字符串而不是从请求体中期望复杂类型

[HttpGet("/")]
public string Index ([FromUri] MyClass aclass) {
    ...
}

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://.../");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var url = String.Format("api/ControllerName?ID={0}&Dept={1}", 
        myModel.ID, myModel.Dept);

    HttpResponseMessage response = await client.GetAsync(url);
    if (response.IsSuccessStatusCode)
    {
        MyModel model = await response.Content.ReadAsAsync<MyModel>();
    }
}

您可以在查询字符串上构建包含
MyClass
属性的URL,并使用HttpClient(或第三方选项,如RestSharp)调用远程客户端

此外,您需要使用
[FromUri]
标记您的WebAPI端点方法,以便它知道从查询字符串而不是从请求体中期望复杂类型

[HttpGet("/")]
public string Index ([FromUri] MyClass aclass) {
    ...
}

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://.../");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var url = String.Format("api/ControllerName?ID={0}&Dept={1}", 
        myModel.ID, myModel.Dept);

    HttpResponseMessage response = await client.GetAsync(url);
    if (response.IsSuccessStatusCode)
    {
        MyModel model = await response.Content.ReadAsAsync<MyModel>();
    }
}

您可以使用简单的RestSharp客户端:

我没有理解您的控制器结构,但您可以更新此示例


文档:

您可以使用简单的RestSharp客户端:

我没有理解您的控制器结构,但您可以更新此示例


文档:

您可以使用简单的RestSharp客户端:

我没有理解您的控制器结构,但您可以更新此示例


文档:

您可以使用简单的RestSharp客户端:

我没有理解您的控制器结构,但您可以更新此示例


文档:

通常,当您想要发送类似json的内容时,您会发布帖子。然而,我不太确定我是否理解你的问题。如果方法属性正确,可以反序列化(使用json.net)到类对象中。为什么不将其作为
C
类传递,而不是创建一个
json
对象,然后将其传递给一个接受C类的web api?通常,当您想要发送类似json的内容时,您会发布。然而,我不太确定我是否理解你的问题。如果方法属性正确,可以反序列化(使用json.net)到类对象中。为什么不将其作为
C
类传递,而不是创建一个
json
对象,然后将其传递给一个接受C类的web api?通常,当您想要发送类似json的内容时,您会发布。然而,我不太确定我是否理解你的问题。如果方法属性正确,可以反序列化(使用json.net)到类对象中。为什么不将其作为
C
类传递,而不是创建一个
json
对象,然后将其传递给一个接受C类的web api?通常,当您想要发送类似json的内容时,您会发布。然而,我不太确定我是否理解你的问题。如果方法属性正确,可以反序列化(使用json.net)到类对象中。为什么不将其作为
C
类传递,而不是创建一个
json
对象,然后将其传递给一个接受C类的web api?