C#/ asp.netでREST API(クライアント提供)を使用しており、そのREST APIによって返されたjson結果を操作しています。私は次のコードでそれを消費しています。REST APIからHTTPWebRepsonseまでのjsonエラーメッセージの処理
HttpWebResponse res = null;
string ReturnBody = string.Empty;
string requestBody = string.Empty;
WebRequest request = WebRequest.Create(Path);
request.ContentType = "application/json";
request.Method = "POST";
request.ContentLength = json.Length;
//Add Basic Auhtentication header
string authInfo = Username + ":" + Password;
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
request.Headers["Authorization"] = "Basic " + authInfo;
System.IO.StreamWriter sw = new System.IO.StreamWriter(request.GetRequestStream());
sw.Write(json);
sw.Close();
res = (HttpWebResponse)request.GetResponse();
if (res != null)
{
using (StreamReader sr = new StreamReader(res.GetResponseStream(), true))
{
ReturnBody = sr.ReadToEnd();
StringBuilder s = new StringBuilder();
s.Append(ReturnBody);
sr.Close();
}
}
それが成功コード(200)を返します場合は、それが正しく動作するので、私は、トライcatchブロック内のコードの上に置いてきたので、私はコード
上記のとおり解像度オブジェクトからJSON応答を消費することができますが、そのREST APIがエラーを出すと、それはキャッチするようにリダイレクトされます。resはnullになるので、私はFiddlerによって以下の図に示すようにエラーメッセージのjson応答にアクセスできません。
ので、私は自分のコードをそのJSONエラーレスポンスを消費することができる程度どのように私を助けて?
ありがとうございました!助けを求めて
私が探していたのはありがたいことですが、それがelse {thow;}(いくつかの例)に行くときの質問は1つだけです。だから私は元のcatch(例外ex)で適切に処理することができます。 –
@ArunRanaについては、「WebExceptionStatus」の値を参照してください。 - http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspxたとえば、DNSの障害、要求のタイムアウトなどは、他の部分に移動します。 – VinayC