Почему WebResponse.StatusCode == HttpStatusCode.OK возвращает false?

#c#

#c#

Вопрос:

Я использую этот код для проверки электронной почты Twitter и пароля в c #, но он возвращает false, и я не знаю почему? кроме того, я хочу вернуть xml, чтобы прочитать из него имя пользователя.

 bool Result = false;

// A try except block to handle any exceptions
try
{
    // Encode the user name with password
    string UserPass = Convert.ToBase64String(
        System.Text.Encoding.UTF8.GetBytes(email   ":"   password));

    // Create our HTTP web request object
    HttpWebRequest Request =
        (HttpWebRequest)WebRequest.Create("http://twitter.com/account/verify_credentials.xml");

    //Request.Proxy = WebProxy;
    //Request.Timeout = Timeout.Infinite;
    //Request.ReadWriteTimeout = Timeout.Infinite;
    //Request.KeepAlive = false;
    //Request.AllowAutoRedirect = false; // was true
    //Request.CookieContainer = cc;
    //Request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36";

    // Set up our request flags and submit type
    Request.Method = "GET";
    Request.ContentType = "application/x-www-form-urlencoded";

    // Add the authorization header with the encoded user name and password
    Request.Headers.Add("Authorization", "Basic "   UserPass);

    // Use an HttpWebResponse object to handle the response from Twitter
    HttpWebResponse WebResponse = (HttpWebResponse)Request.GetResponse();

    string SourceCode = new StreamReader(WebResponse.GetResponseStream()).ReadToEnd();

    // Success if we get an OK response
    Result = WebResponse.StatusCode == HttpStatusCode.OK;
}
catch (Exception Ex)
{
    System.Diagnostics.Debug.WriteLine("Error: "   Ex.Message);
}

// Return success/failure

return Resu<
  

Комментарии:

1.Пожалуйста, приложите некоторые усилия для форматирования вашего кода — посмотрите предварительный просмотр перед публикацией и спросите, действительно ли вы хотите, чтобы ваш пост выглядел именно так. Далее, предположительно, Result имеет значение false, потому что WebResponse.StatusCode это не HttpStatusCode.OK так. Вы выполнили отладку в коде и посмотрели, что это на самом деле такое? Кстати, локальные переменные в C # обычно начинаются со строчной буквы. Следуя соглашениям, другим будет проще помогать вам.

2. Как упоминает Джон, возможно, вам захочется ознакомиться с Рекомендациями Microsoft по именованию: msdn.microsoft.com/en-us/library/ms229002.aspx

3. спасибо, я это сделаю 🙂

Ответ №1:

На самом деле ваш код возвращает 404 not found, что приводит к перехвату, поэтому по умолчанию вы устанавливаете результат в false, он никогда не достигает этой строки

 result = WebResponse.StatusCode == HttpStatusCode.OK;
  

итак, результат false ;

Также, чтобы было удобнее объявлять свой результат следующим образом,

 bool result = false;
  

Вместо

   result = WebResponse.StatusCode == HttpStatusCode.OK;
  

просто сделайте

 if(WebResponse.StatusCode == HttpStatusCode.OK;)
{
  result =true;
}
  

Комментарии:

1. Прошу прощения, но по-прежнему возврат 404 не найден

2. Да, тогда он вернет только false, отметьте как ответ, если это помогло

3. Пожалуйста, я хочу знать, почему он возвращает 404 not found?

4. Конечно, я предоставлю образец