在发布为 json 后,我没有从 url 收到所需的状态代码



我的代码是这样的

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; }
}

最新更新