Récupérer une chaîne JSON à partir de l'URL dans Windows Phone 8

J'essaie d'obtenir une chaîne JSON à partir d'une URL dans une application Windows Phone 8 (la page nécessite une authentification et je pense que c'est là où mon code échoue), j'utilise le code suivant:

    public WebClient client = new WebClient();
    public string result;

    public void DoStuff()
    {
        string username = "username";
        string password = "password";
        string url = "myurl";
        client.Credentials = new NetworkCredential(username, password);
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
        client.DownloadStringAsync(new Uri(url));
    }
    void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        result = e.Result;
    }

However, when run the app, I got a System.Reflection.TargetInvocationException at e.result

En entrant dans InnerException , je vois ceci:

[System.Net.WebException] {System.Net.WebException: An exception occurred during a WebClient request. ---> System.Net.ProtocolViolationException: A request with this method cannot have a request body. at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result) at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result) --- End of inner exception stack trace ---} System.Net.WebException

J'ai essayé avec HttpClient mais j'ai eu le même problème. Je voudrais savoir si quelqu'un sait comment résoudre cela.

Merci!

UPDATE: I've tried navigating to the page on my phone using IE, and then the IE Mobile says: "Unsupported Address, IE Mobile doesn't support this type of address and can't display this page". That's why the app is crashing too?

0
J'ai eu la même erreur (les URL des pages sont quelque chose comme: " rel="nofollow noreferrer"> 180.200.1.231:4567/... "). Maintenant, j'ai essayé d'ajouter client.Headers [HttpRequestHeader.AcceptEncoding] =" gzip ", puis j'ai reçu une" exception serveur introuvable "
ajouté l'auteur Luan Seminario, source
Je fais cela, l'URL que j'analyse a le "http: //", mais je ne peux même pas obtenir la chaîne Json. Je ne sais pas si je fais des erreurs de code ou s'il y a quelque chose qui me manque sur le code.
ajouté l'auteur Luan Seminario, source
quand vous essayez avec une autre adresse ce qui se passe?
ajouté l'auteur user1924375, source
essayez avec ajouter http://180. ....
ajouté l'auteur user1924375, source

1 Réponses

Méthode GET (avec/sans informations d'identification)

private string username = "user";
private string password = "passkey";
private string myUrl = "http://some_url.com/id?=20";
private WebClient client = new WebClient();

private void retrieveJson()
{
        client.Credentials = new NetworkCredential(username, password);
        client.Encoding = Encoding.UTF8;
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
        client.DownloadStringAsync(new Uri(myUrl), UriKind.Relative);
}
//WebClient String (json content) Download
private void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
       //You will get you Json Data here..
        var myJSONData = e.Result;
        JObject JsonData = JObject.Parse(myJSONData);
        //Do something with json 
        //Ex: JsonData["Array1"][5]
}

Méthode POST (avec/sans informations d'identification)

private string username = "user";
private string password = "passkey";
private string myUrl = "http://some_url.com/id?=20";
private WebClient client = new WebClient();
private string parameters = "{\"I_NAME\":\"0000"\"}"; //Example

private void postMethod()
{
        client.Credentials = new NetworkCredential(username, password);
        client.Encoding = Encoding.UTF8;
        client.Headers["Content-Length"] = parameters.Length.ToString();
        client.UploadStringCompleted += new UploadStringCompletedEventHandler(client_UploadStringCompleted);

        client.UploadStringAsync(new Uri(myUrl), "POST", parameters);
}

private void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
        if (e.Error == null)
        {
            var myJSONData = e.Result;
            JObject JsonData = JObject.Parse(myJSONData);
        }
}
0
ajouté
fonctionne avec la base de données SAP
ajouté l'auteur Luan Seminario, source