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) Bad Request (またはその他のエラー応答) の場合でも JSON エラーが返されるようにするにはどうすればよいですか? 以外の別のクラスを使用する必要があり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 に答える