0

当我尝试连接到服务器时,我的代码中发生了奇怪的事情......使用授权凭据,响应返回中的状态码是“OK”(我对此感到满意)但是当我使用未经授权的凭据登录时,状态码响应应该是“未经授权”相反,我得到“远程服务器返回错误:未找到”。为什么应用程序崩溃?我只更改了凭据!感谢您的帮助

//Request
   public void ConnexionNT(string password,string user)

    { 
        try
        {

            HttpWebRequest request= (HttpWebRequest)HttpWebRequest.Create(URL_CONNEXION);

            request.Method = "GET";

            request.Credentials = new NetworkCredential(user, password, domain);

            request.CookieContainer = _cookiecontainer;

            request.BeginGetResponse(new AsyncCallback(GetResponse),request);

        }

        catch(HttpRequestException)
        {
            MessageBox.Show("Un problème de connexion avec  le serveur a eu lieu.", "Echec Authentification", MessageBoxButton.OK);
        }
        catch (Exception )
        {
            MessageBox.Show("Une erreur a eu lieu","Echec Authentification", MessageBoxButton.OK);
        }

    }  

    //Response
    private void GetResponse(IAsyncResult MyresponseAsync)
    {

            HttpWebRequest request = (HttpWebRequest)MyresponseAsync.AsyncState;

            if (request != null)
            {
                try
                {
                  //CRASH HERE//  HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyresponseAsync);

                     if(response.StatusCode==HttpStatusCode.OK)//l'authentification a réussi
                     {
                         if (event_Authorized != null)
                          event_Authorized.Invoke();

                         if (response.Cookies != null && response.Cookies.Count>0)//on récupere le cookie de navigation
                         {
                             App._cookiecollection = response.Cookies;

                         }

                     }
                     else if (response.StatusCode == HttpStatusCode.Unauthorized)//l'authentification a échoué
                     {
                         if (event_Unauthorized != null)
                             event_Unauthorized.Invoke();

                     }
                     else if (response.StatusCode == HttpStatusCode.NotFound)//Erreur serveur
                     {

                     }           

                }

                catch (WebException)
                {
                    MessageBox.Show("Erreur de connexion", "erreur getresponse", MessageBoxButton.OK);
                }


            }
    }
4

1 回答 1

0

好的,我发现这里发生了什么......当在响应中获得的状态码是“未找到”或“未授权”时,会抛出一个 Webexception,所以如果你想检查响应的属性,你需要在例外...看来这只是Windows手机上的情况...这是对我有用的代码:

        private void GetResponseIdentificationNT(IAsyncResult MyresponseAsync)
    {

        HttpWebRequest request = (HttpWebRequest)MyresponseAsync.AsyncState;

        if (request != null)
        {
            try
            {

                HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyresponseAsync);

                if (response.StatusCode == HttpStatusCode.OK)//l'authentification a réussi
                {
                    if (event_Authorized != null)
                        event_Authorized.Invoke();

                }   
            }

            catch (WebException we)
            {
                HttpWebResponse response = (HttpWebResponse)we.Response;

                if (response.StatusCode==HttpStatusCode.Unauthorized)
                {
                    if (event_Unauthorized != null)
                        event_Unauthorized.Invoke();

                }
                else if (response.StatusCode == HttpStatusCode.NotFound)//Server error
                {
                    if (event_NotFound != null)
                        event_NotFound.Invoke();

                }

            }

            catch (Exception ex)
            {
               throw new UnknowException(ex.Message);
            }
        }
    } 
于 2014-01-16T10:20:55.283 回答