我正在使用PaymentGateway,我有一个数组格式数据,如何从数组中获取每个值并在C#中使用该值

时间:2018-11-26 05:52:56

标签: c# asp.net

这是在Gatway Api URL中传递数据的格式。

   string postString = "key=" + keys +
            "&command=" + method +
            "&hash=" + Hashed +
            "&var1=" + var1;

之后,使用post方法传递数据,我得到数组格式的响应,当我使用Jobject进行转换时,得到错误;当我用C#开发时,如何获得每个令牌值。

 System.Net.ServicePointManager.SecurityProtocol = 
        SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
        WebRequest myWebRequest = WebRequest.Create(Url);
        myWebRequest.Method = "POST";
        myWebRequest.ContentType = "application/x-www-form-urlencoded";
        myWebRequest.Timeout = 180000;
        StreamWriter requestWriter = new 
        StreamWriter(myWebRequest.GetRequestStream());
        requestWriter.Write(postString);
        requestWriter.Close();

        StreamReader responseReader = new 
        StreamReader(myWebRequest.GetResponse().GetResponseStream());
        WebResponse myWebResponse = myWebRequest.GetResponse();
        Stream ReceiveStream = myWebResponse.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
        StreamReader readStream = new StreamReader(ReceiveStream, encode);
        string response = readStream.ReadToEnd();

        JObject account = JObject.Parse(response);      //Here getting Error

        String status = (string)account.SelectToken("transaction_details." + 
        var1 + ".status");

这是我得到回复的格式

enter image description here

这是生成的错误

enter image description here

2 个答案:

答案 0 :(得分:0)

您必须首先将1双引号替换为2,然后反序列化响应对象

     response= response .Replace("\"", "\"\""); 
     var res = JsonConvert.DeserializeObject(response);
     JObject account = JObject.Parse(res); 

答案 1 :(得分:0)

我不知道您能到达那里什么,似乎API试图为您提供在浏览器中看起来不错的东西。

如果您想取回JSON,则必须传达您的愿望:

myWebRequest.Accept = "application/json";

要使该属性可用,您必须先将Web请求强制转换为HttpWebRequest

代替:

WebRequest myWebRequest = WebRequest.Create(Url);

var myWebRequest = (HttpWebRequest)WebRequest.Create(Url);