2

私は WebClient を使用して、次のようにサーバーに POST を実行しています。

string URI = "http://mydomain.com/foo";
string myParameters =
   "&token=1234" +
   "&text=" + HttpUtility.UrlEncode(someVariable);

using (WebClient wc = new WebClient())
{
    try
    {
      wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
      string HtmlResult = wc.UploadString(URI, myParameters);
    }
    catch (WebException e)
    {
        return e.Message;
    }
}

HTTP 403 (禁止) が原因で例外がスローされることがあります。その場合、正確な理由を知りたいです。私が呼び出しているサービスを掘り下げると、オプションerrorDetailで次のようなフィールドを返すことが文書化されています。

"code": 403,
"errorType": "not_authorized",
"errorDetail": "Can reply on a checkin at most once."

しかし、Visual Studio でコードをステップ実行しているときに、フィールドを取得する方法がわかりませんerrorDetail。の一部ではないようWebExceptionです。

それを取得する方法はありますか?表示できるのは次のようなものです:

return e.Message + " -- " + e.errorDetail

?

4

1 に答える 1

0

errorDetailはHTTP仕様の一部ではないため、WebClientそれについては知りません。同じ理由で、BCLのどこにも見つかりません。

おそらく必要なのは、それを解析できるようにするための応答本文です(おそらく、JSONとして?データはそのように見えます)。

から応答オブジェクトを取得できますWebException.Response。通常の応答を読むのと同じように読んでください。

応答がない場合(ネットワークエラーなど)、このプロパティがnullになる可能性があることに注意してください。

于 2012-12-24T13:19:51.307 に答える