我正在设计2个网站,并希望从第一个网站发送一个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", ???);
}
}
第二个网站中Info
控制器的操作Contacts
:
[HttpPost]
public ActionResult Info()
{
// How can I catch the json here?
// string json = ...
}
你能告诉我如何获得json吗?
p / s:抱歉give me the code
问题,我一直在寻找谷歌搜索,但在我的案例中没有找到样本。我想在服务器端执行此操作,而不是在客户端使用ajax。
答案 0 :(得分:1)
您需要告诉客户端您要发送的内容。在这种情况下,它是一个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;
}
}
框架应该能够通过绑定重建对象。