La mia app Windows Phone Ottieni la risposta vuota (404 non trovata) Seconda volta, funziona alla grande prima volta; e funziona sempre bene se senza SSL

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

  •  21-12-2019
  •  | 
  •  

Domanda

Sto costruendo la mia prima applicazione di WindowsPhone 8.1, il ruolo della mia applicazione è creare una connessione con il server per ottenere informazioni da esso, quindi sto scrivendo il codice per fare questo processo inviando un po 'di richiesta JSON-RPC per ottenere un po'Informazioni, ho successo per ottenerlo in prima volta, ma quando invio la seconda richiesta ricevo una risposta vuota con 404 ERROR (pagina non trovata). Ma quando chiamo il servizio senza https (solo http) funziona bene a prescindere da quante volte lo chiamo!

   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();
            }
            }

        }
.

Ancora una volta, quando chiama l'URL del servizio (inizia con HTTPS) in prima volta ho ricevuto risposta con i dati ricercati, ma la seconda volta ricevo una risposta vuota con 404 ERROR (Pagina non trovata) !! Qualsiasi aiuto per favore

È stato utile?

Soluzione

Si prega di provare a utilizzare questa soluzione.

        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;
        }

    }
.

Altri suggerimenti

Un paio di idee:

    .
  • Non utilizzare la proprietà .Result.Basta usare await invece per evitare deadlock.
  • Rimuovere lo spazio aggiuntivo davanti al parametro Tipo di supporto " application/json"
  • Abilita la registrazione sul server web e vedere se la seconda richiesta arriva sul server.
  • Ottieni una traccia di rete, ad esempio con wireshark o Fiddler .
  • Prova a mettere WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp); nel tuo codice di inizializzazione, come proposto in questo Risposta .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top