Доступ к закрытому HttpWebRequest._HttpResponse в C # - PullRequest
1 голос
/ 25 февраля 2011

Я пытаюсь проверить подлинность с помощью OAuth от Google, используя C #, и, несмотря на все мои усилия, я все еще получаю 400 плохих запросов.

Так что мой маленький

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

никогдана самом деле получает ответ.Мой объект ответа никогда не заполняется.

НО Google отправляет данные обратно на 400 с.Вы можете видеть, что если вы указываете браузеру на https://www.google.com/accounts/OAuthGetRequestToken

У меня вопрос, как мне получить доступ к этой информации в C #?Похоже, что он внутри закрытого члена HttpWebRequest._HttpResponse, но он находится в форме байтового массива, и я не могу прочитать его или получить доступ к нему программно.

Любая помощь будет принята.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Вам нужно поймать выброшенное исключение 404, например:

HttpWebResponse response;
try
{
    response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
    response = (HttpWebResponse)ex.Response;
}

Это раздражает, и IMO немного упускает из виду, но это единственный способ, если вы используете класс HttpWebRequest.

0 голосов
/ 25 февраля 2011

Ваш response объект никогда не заполняется, потому что WebException выбрасывается request.GetResponse() при ошибке 400.

Попробуйте что-то вроде этого:

HttpWebResponse response;
bool isValid = false;

try
{
    response = (HttpWebResponse)request.GetResponse();
    isValid = true;
}
catch (WebException we)
{
    response = (HttpWebResponse)we.Response;
}

if (isValid)
{
    // the response was valid
}
else
{
    // the response returned a 400 error
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...