Mon application Windows Phone Obtenez une réponse vide (404 introuvable) Deuxième fois, ça fonctionne bien du premier coup ; Et fonctionne toujours bien sans SSL

StackOverflow https://stackoverflow.com//questions/24038530

  •  21-12-2019
  •  | 
  •  

Question

Je construis ma première application WindowsPhone 8.1, le rôle de mon application est de créer une connexion avec le serveur pour en obtenir des informations, j'écris donc le code pour effectuer ce processus en envoyant une requête json-rpc au serveur pour obtenir des informations, je J'ai réussi à l'obtenir la première fois, mais lorsque j'envoie la deuxième demande, je reçois une réponse vide avec une erreur 404 (page introuvable).Mais lorsque j'appelle le service sans https (http uniquement), cela fonctionne bien, quel que soit le nombre de fois que je l'appelle !

   public async Task<string> GetDataFromServer(string urlToCall, string JSONData,string RR)
        {
            string UserName = “XXXXXXX”
            string Password = "XXX";

            using ( var handler = new HttpClientHandler())
            {
                handler.Credentials = new NetworkCredential(UserName, Password);
                HttpClient client = new HttpClient(handler);

                HttpResponseMessage response = null;

            try
            {


                response = await client.PostAsync(urlToCall, new StringContent(JSONData.ToString(), Encoding.UTF8, " application/json"));
               string res = response.Content.ReadAsStringAsync().Result;




                Windows.UI.Popups.MessageDialog g = new Windows.UI.Popups.MessageDialog(res);
                await g.ShowAsync();
                return res;

            }
            catch (Exception ex)
            {


                Windows.UI.Popups.MessageDialog g = new Windows.UI.Popups.MessageDialog("Error is : " + ex.Message);
               g.ShowAsync();
               return "Error";
            }
            finally
            {
                response.Dispose();
                client.CancelPendingRequests();
                client.Dispose();
                handler.Dispose();
            }
            }

        }

Encore une fois, lorsque j'appelle l'URL du service (commence par https) la première fois, j'ai reçu une réponse avec les données recherchées, mais la deuxième fois, je reçois une réponse vide avec une erreur 404 (page introuvable) !!Toute aide s'il vous plaît

Était-ce utile?

La solution

S'il vous plaît essayez d'utiliser cette solution.

        public async Task<string> SendJSONData3(string urlToCall, string JSONData)
    {
        string UserName = "XXXXXXXXX";
        string Password = "XXXXXXXXX";
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(urlToCall);
        httpWebRequest.Credentials = new NetworkCredential(UserName, Password);
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(await httpWebRequest.GetRequestStreamAsync()))
        {
            string json = JSONData;
            streamWriter.Write(json);
            streamWriter.Flush();
        }
        var httpResponse = (HttpWebResponse)await httpWebRequest.GetResponseAsync();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            return result;
        }

    }

Autres conseils

Quelques idées :

  • N'utilisez pas le .Result propriété.Utilisez simplement await au lieu de cela pour éviter les blocages.
  • Supprimez l'espace supplémentaire devant le paramètre de type de média " application/json"
  • Activez la connexion sur le serveur Web et voyez si la deuxième requête arrive sur le serveur.
  • Obtenez une trace réseau, par exemple avec Requin filaire ou Violoneux.
  • Essayez de mettre WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp); dans votre code d'initialisation, comme proposé dans ce répondre.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top