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

C# Android-JSON解析引发意外的字符异常,c#,android,json,parsing,exception,C#,Android,Json,Parsing,Exception,我正在开发一个安卓c#应用程序,它从一个特定的url获取价格(以JSON格式),然后解析得到价格。我尝试了多个方法来实现这一点,但每个方法都会抛出一个特定的异常。这是我最近的一个: public string getprice() { HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create("https://api.cryptonator.com/api/ticker/etc-usd");

我正在开发一个安卓
c#
应用程序,它从一个特定的
url
获取价格(以
JSON
格式),然后解析得到价格。我尝试了多个方法来实现这一点,但每个方法都会抛出一个特定的异常。这是我最近的一个:

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:意外字符“此问题最可能的原因是响应实际上不是JSON


这里的线索是
这个问题最可能的原因是响应实际上不是JSON


这里的线索是
您多久访问一次API?是否有可能您被限制,并且当您超过允许的速率时,他们会向您发送错误而不是JSON?你的代码对我来说很好,我从不出错。这是我用来执行代码的小提琴:@Rainbolt我在
foreach
循环中调用
getprice()
函数10次。但是函数
getprice()
很好,它只是在25%的尝试中抛出这个异常。你有什么建议?我不介意用新的功能替换它,我只想得到没有异常的价格。我们需要看到异常抛出时的响应。如果它在75%的时间内都有效,并且你在fiddler中捕捉到响应并展示给我们,那么你很有可能捕捉到一个好的响应。我们需要一个糟糕的回应。编辑您的代码以使用try-catch,并在捕获异常时记录响应。@Rainbolt好的,我编辑了我的代码并添加了
try
catch
,这是运行时引发的异常,我通过Toast消息捕获到它:
system.argumentexception:意外字符“您多久点击一次API?”?是否有可能您被限制,并且当您超过允许的速率时,他们会向您发送错误而不是JSON?你的代码对我来说很好,我从不出错。这是我用来执行代码的小提琴:@Rainbolt我在
foreach
循环中调用
getprice()
函数10次。但是函数
getprice()
很好,它只是在25%的尝试中抛出这个异常。你有什么建议?我不介意用新的功能替换它,我只想得到没有异常的价格。我们需要看到异常抛出时的响应。如果它在75%的时间内都有效,并且你在fiddler中捕捉到响应并展示给我们,那么你很有可能捕捉到一个好的响应。我们需要一个糟糕的回应。编辑您的代码以使用try-catch,并在捕获异常时记录响应。@Rainbolt好的,我编辑了我的代码并添加了
try
catch
,这是运行时引发的异常,我看到一条Toast消息:
system.argumentexception:unexpected character“我下载了fiddiler并查看了网站的回复,我在问题中添加了一个结果截图。我没有发现任何可疑之处USCA我在这里玩了一个游戏,并告诉应用程序如果它发现了一个意外的字符,如
@Wassim01如果API提供了HTTP状态码,请使用它来确定成功,而不是玩响应。如果失败,请重试(最好是指数延迟,抖动重试),直到您获得成功响应。我已下载fiddiler并检查了网站的响应,我已在问题中添加了结果的屏幕截图。我没有发现任何可疑之处USCA我在这里玩了一个游戏,并告诉应用程序如果它发现了一个意外的字符,如
@Wassim01如果API提供了HTTP状态码,请使用它来确定成功,而不是玩响应。如果失败,重新尝试(理想情况下是指数延迟,抖动的重新尝试),直到获得成功响应。