我的代码是这样的
var contentData = new StringContent(allData, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://remitademo.net/remita/exapp/api/v1/send/api/echannelsvc/merchant/api/paymentinit", contentData);
var msg = JsonConvert.DeserializeObject<BursaryTransactions>(response.Content.ReadAsStringAsync().Result);
其中allData
是我的 JSON 序列化对象。
BursaryTransactions
是一个具有属性"状态"、"RRR"、"状态代码"的模型类。
我的目标是将我的内容作为json发布到支付网关(Remita),并作为回报收到状态码025和RRR。
https://remitademo.net/remita/exapp/api/v1/send/api/echannelsvc/merchant/api/paymentinit
是 Remita 演示 API 站点,其 jsonp 响应代码为
({"statuscode":"025","RRR":"260007663696","status":"Payment Reference generated"}).
运行程序后,我希望我的对象msg
保存 Remita 响应,而不是我得到的状态代码 200。
它做错了什么?
首先,不要混合使用 async-await 和阻止调用(如可能导致死锁的.Result
)。
参考异步/等待 - 异步编程的最佳实践
这看起来像一个简单的 JSON 反序列化
var contentData = new StringContent(allData, System.Text.Encoding.UTF8, "application/json");
string url = "https://remitademo.net/remita/exapp/api/v1/send/api/echannelsvc/merchant/api/paymentinit";
var response = await client.PostAsync(url, contentData);
var responseData = await response.Content.ReadAsStringAsync();
var msg = JsonConvert.DeserializeObject<BursaryTransactions>(responseData);
string statuscode = msg.statuscode; //check for 025
string RRR = msg.RRR;
这假设
public class BursaryTransactions {
public string statuscode { get; set; }
public string status { get; set; }
public string RRR { get; set; }
}