首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JSON中获取webservice的400状态时返回false

在JSON中获取webservice的400状态时返回false
EN

Stack Overflow用户
提问于 2015-05-05 22:09:06
回答 2查看 613关注 0票数 17

在我的代码隐藏文件中,我调用了这个函数:

private void loginAction(object sender, TappedRoutedEventArgs e)
{
    Webservice webservice = new Webservice();
    webservice.getUser(txtLogin.Text, txtPass.Text);
}

然后在webservice中,我这样做:

public void getUser(String user, String password)
{
    String strUrl = String.Format("http://*******/nl/webservice/abc123/members/login?email={0}&password={1}",user,password);

    startWebRequest(strUrl, loginCallback);
}

private async void loginCallback(IAsyncResult asyncResult)
{
    try
    {
        ReceiveContext received = GetReceiveContextFromAsyncResult(asyncResult, "User");

        if (received != null && received.Status == 200)
        {
            await UserDataSource.AddUser(received.Data);
        }
        else
        {

            throw new Exception("failedddd");
        }
    }
    catch (Exception e)
    {

    }   
}

我现在想做的是当一个异常被抛出时,显示一个消息框。当我得到一个200的状态时,我导航到代码隐藏文件中的下一页。

我现在的问题是,我如何在我的代码隐藏文件中知道这一点?

首先要感谢大家!

编辑我也有这些助手方法:

#region HELPERS
private void startWebRequest(string url, AsyncCallback callback)
{
    // HttpWebRequest.RegisterPrefix("http://",WebRequestCreator.ClientHttp);
    HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));

    // start the stream immediately
    httpWebRequest.AllowReadStreamBuffering = false;

    // asynchronously get a response
    httpWebRequest.BeginGetResponse(callback, httpWebRequest);
}

private ReceiveContext GetReceiveContextFromAsyncResult(IAsyncResult asyncResult, string context)
{
    // Request afleiding van de AsyncState uit het ontvangen AsyncResult
    HttpWebRequest httpWebRequest = (HttpWebRequest)asyncResult.AsyncState;
    HttpWebResponse httpWebResponse = null;

    try
    {
        // Response afleiden uit de Resuest via de methode EndGetResponse();
        httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult);

        string responseString;
        // using == IDisposable (automatische GC)
        using (StreamReader readStream = new StreamReader(httpWebResponse.GetResponseStream()))
        { //Stream van de response gebruiken om een readstream te maken.
            responseString = readStream.ReadToEnd();
        }
        // Release the HttpWebResponse
        //httpWebResponse.Dispose();

        return new ReceiveContext(int.Parse(responseString.Substring(10, 3)), responseString);
    }
    catch (WebException wex)
    {
        Debug.WriteLine(String.Format("{0} kon niet opgehaald worden: {1}", context, wex.Message));
    }
    catch (JsonReaderException jrex)
    {
        Debug.WriteLine(String.Format("{0} opgehaald van server, maar de json kon niet geparsed worden: {1}", context, jrex.Message));
    }
    catch (FormatException fex)
    {
        Debug.WriteLine(String.Format("{0} opgehaald van server, maar de gegevens kloppen niet: {1}", context, fex.Message));
    }
    catch (ArgumentOutOfRangeException arex)
    {
        Debug.WriteLine(String.Format("{0} opgehaald van server, maar de context is leeg: {1}", context, arex.Message));
    }

    return null;
}
public sealed class ReceiveContext
{
    public ReceiveContext(int status, string data)
    {
        this.Status = status;
        this.Data = data;
    }

    public int Status { get; private set; }

    public string Data { get; private set; }
}
#endregion 
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30055363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档