通过HttpClient发送和接收json
本文关键字:json HttpClient 通过 | 更新日期: 2023-09-27 18:29:01
我正在设计两个网站,想从第一个网站向第二个网站发送json:
// Action from the first website
public async Task<ActionResult> Index()
{
using (var client = new HttpClient())
{
var package = new Dictionary<string, string>()
{
{ "Name", "Julie" }
{ "Address", "UK" }
};
string json = JsonConvert.SerializeObject(package);
var response = await client.PostAsync("thesecondsite.com/contacts/info", ???);
}
}
第二网站Contacts
控制器的动作Info
:
[HttpPost]
public ActionResult Info()
{
// How can I catch the json here?
// string json = ...
}
你能告诉我如何获得json吗?
p/s:很抱歉give me the code
问题,我一直在谷歌搜索,但在我的案例中没有找到样本。我想在服务器端这样做,而不是在客户端使用ajax。
您需要告诉客户端您想要发送什么。在这种情况下,它是一个JSON字符串负载
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("thesecondsite.com/contacts/info", content);
至于第二个网站,你有几种方法可以接收它。但如果你只是像在表单第一个网站中显示的那样发送JSON,这里有一种快速而肮脏的方法
[HttpPost]
public ActionResult Info(IDictionary<string,string> payload) {
if(payload!=null) {
var Name = payload["Name"];
var Addredd = payload["Address"];
}
}
这是一个如何做到这一点的快速示例。您应该检查以确保您要查找的密钥确实在有效负载中。
你也可以这样做
class Contact {
public string Name{get;set;}
public string Address {get;set;}
}
...
[HttpPost]
public ActionResult Info(Contact payload) {
if(contact!=null){
var Name = contact.Name;
var Address = contact.Address;
}
}
框架应该能够通过绑定来重构对象。