12

我正在使用Google Translate API并尝试捕获出现错误时返回的数据。(仅供参考:我知道 API 密钥是错误的,我只是在测试这个)。

问题在于,您可以通过单击链接看到浏览器显示错误信息,但 C# 抛出 WebException 并且我似乎无法获取响应数据。

这是我的代码:

string url = "https://www.googleapis.com/language/translate/v2?key=INSERT-YOUR-KEY&source=en&target=de&q=Hello%20world";
WebClient clnt = new WebClient();

//Get string response
try
{
    strResponse = clnt.DownloadString(url);
    System.Diagnostics.Debug.Print(strResponse);
}
catch (Exception ex)
{
    System.Windows.Forms.MessageBox.Show(ex.Message);
    return null;
}

即使响应是(400)错误请求(或任何其他错误响应),我如何获得返回的 JSON 错误?我是否需要使用 a 以外的其他类WebClient

4

2 回答 2

27

这可能会帮助你

catch ( WebException exception )
{
   string responseText;

   using(var reader = new StreamReader(exception.Response.GetResponseStream()))
   {
     responseText = reader.ReadToEnd();
   }
}

这将为您提供 json 文本,然后您可以使用您喜欢的任何方法从 JSON 转换。

检索自:将 WebClient 错误作为字符串获取

于 2013-03-05T22:38:38.897 回答
1

我会捕捉到您收到的特定异常-它将包含有关失败的相关数据。

根据 MSDN,WebException.Response将包含从服务器收到的响应。

一旦您能够从此响应对象中检索 JSON 数据,您就需要自己反序列化它。

于 2013-03-05T22:37:29.707 回答