में वेब सेवा के 400 स्थिति मिला मेरी codebehind फ़ाइल में मैं इस समारोह फोन:एक झूठी लौटने जब JSON
private void loginAction(object sender, TappedRoutedEventArgs e)
{
Webservice webservice = new Webservice();
webservice.getUser(txtLogin.Text, txtPass.Text);
}
तब वेब सेवा में
मैं यह कर:
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
होना चाहिए नाम स्थान के लिए सबसे महत्वपूर्ण जरिए कर सकते हैं HttpWebResponse में स्टेटस कोड – csharpwinphonexaml
@csharpwinphonexaml नामक एक प्रॉपर्टी है जिसे मैं अपने JSON में कोड वापस प्राप्त करता हूं। लेकिन मेरे पास एक और सवाल है। अब मैं अपने लॉगिन फ़ंक्शन पर कार्य। फैक्टरी का उपयोग कर रहा हूं। लेकिन यह httpWebRequest.BeginGetResponse (कॉलबैक, httpWebRequest) पर रुक जाता है; क्या आपको कोई विचार है कि मैं इसे कैसे हल कर सकता हूं? – Steaphann
Windows.Web.Http.HttpClient का उपयोग क्यों नहीं करें? –