Android - JSON解析引发意外的字符异常

时间:2018-06-08 13:02:29

标签: c# android json parsing exception

我正在开发一个Android c#应用,它从特定的JSON获取价格(url格式),然后解析它以获得价格。我尝试过多种方法,但每种方法都抛出一个特定的异常。这是我最近的一个:

public string getprice()
    {
        HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create("https://api.cryptonator.com/api/ticker/etc-usd");
        webReq.CookieContainer = new CookieContainer();
        webReq.Method = "GET";
        using (WebResponse response = webReq.GetResponse())
        {
            using (Stream stream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(stream);
                var array = JsonValue.Parse(reader.ReadToEnd());
                string price = array["ticker"]["price"].ToString();
                return price;
            }
        }
    }

因此,有时它工作正常,有时它会抛出此异常

  

system.argumentexception:意外字符'<'在第1行第0列

它已经调试了我的应用程序19次来测试它,它在前15次运行正常,然后在每次执行之后,它会抛出上面的错误。我不知道为什么会这样。你能帮帮我吗?

修改

我使用Fiddler检查原始请求,因为@Fenton推荐我。 这是我得到的here

1 个答案:

答案 0 :(得分:3)

此问题的最可能原因是响应实际上不是JSON。

这里的线索是<

造成这种情况的两个常见原因是:

  • 您调用的Web API有错误,错误页面是HTML(因此,它启动<
  • Web API可以返回不同的数据格式,并向您发送XML(检查您的接受标头,并且API尊重它)。

检查原始请求(例如使用Fiddler)以查看实际响应 - 或者在调试模式下查看原始响应。