【发布时间】:2018-11-18 13:13:44
【问题描述】:
我正在开发一个 android 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:第 1 行第 0 列出现意外字符“
它已经对我的应用程序进行了 19 次调试以对其进行测试,前 15 次运行良好,之后每次执行时都会抛出上述错误。我不知道为什么会这样。你能帮帮我吗?
编辑
【问题讨论】:
-
您多久访问一次 API?您是否有可能受到限制,并且当您超过允许的速率时,他们会向您发送错误而不是 JSON?你的代码对我来说很好,我从来没有出错。这是我用来执行代码的小提琴:dotnetfiddle.net/oceuPV
-
@Rainbolt 我在
foreach循环中调用了getprice()函数 10 次。但是函数getprice()很好,它只是在 25% 的尝试中抛出了这个异常。你有什么建议 ?我不介意用新功能替换它,我只想毫无例外地获得价格。 -
我们需要看到异常抛出时的响应。如果它在 75% 的时间内都在工作,并且您在 fiddler 中捕获响应并将其展示给我们,那么您很可能捕获了一个很好的响应。我们需要一个糟糕的回应。编辑您的代码以使用 try catch 并在捕获到异常时记录响应。
-
@Rainbolt 好的,我编辑了我的代码并添加了
try和catch,这是运行时抛出的异常,我通过 Toast 消息捕获它:system.argumentexception: unexpected character '<' at line 1 column 0
标签: c# android json parsing exception