C# 如何将json发送到web api?
我想将json从MVC应用程序中的控制器提交到Web API应用程序 在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
//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?