Windows phone 8 远程服务器返回错误:NotFound。只有当我使用错误的凭据时…WP8
当我尝试连接到服务器时,代码中会发生奇怪的事情。。。 使用授权凭据时,响应返回的状态码为“OK”(我对此很满意),但当我使用未授权凭据登录时,状态码响应应为“unauthorized”,而我得到的是“远程服务器返回了一个错误:找不到”。为什么应用程序会崩溃?我只更改了凭据!感谢您的帮助Windows phone 8 远程服务器返回错误:NotFound。只有当我使用错误的凭据时…WP8,windows-phone-8,remote-server,classnotfound,webexception,Windows Phone 8,Remote Server,Classnotfound,Webexception,当我尝试连接到服务器时,代码中会发生奇怪的事情。。。 使用授权凭据时,响应返回的状态码为“OK”(我对此很满意),但当我使用未授权凭据登录时,状态码响应应为“unauthorized”,而我得到的是“远程服务器返回了一个错误:找不到”。为什么应用程序会崩溃?我只更改了凭据!感谢您的帮助 //Request public void ConnexionNT(string password,string user) { try {
//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);
}
}
}
好吧,我发现这里发生了什么。。。 当响应中获取的状态码为“Notfound”或“Unauthorized”时,将引发Webexception,因此如果要检查响应的属性,则需要在异常捕获内执行此操作…似乎只有在Windows phone上才是如此。。。 以下是对我有效的代码:
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);
}
}
}