Question

J'ai demandé ici comment faire de la poste https, et maintenant cela fonctionne très bien. Le problème est maintenant Comment envoyer un paramètre, nom de la requête, Wich est une chaîne JSON:

{ "key1": "value1", "key2": { "key21": "val21"}}

Qu'est-ce que je fais et ne fonctionne pas est:

HttpWebRequest q = (HttpWebRequest)WebRequest.Create(Host + ":" + Port);
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
q.Method = "POST";
q.ContentType = "application/json";
q.Headers.Add("JSON-Signature", GetFirma(query));
q.Credentials = new NetworkCredential(user,pass);

byte[] buffer = Encoding.UTF8.GetBytes("query=" + query);

q.ContentLength = buffer.Length;

using (Stream stream = q.GetRequestStream())
{
     stream.Write(buffer, 0, buffer.Length);                    
}

Mais le serveur répond toujours dit qu'il n'y a aucun paramètre « requête ». Toute aide?

Merci d'avance!

Était-ce utile?

La solution

J'utiliser WebClient.UploadValues:

        using (WebClient client = new WebClient())
        {
            NameValueCollection fields = new NameValueCollection();
            fields.Add("query", query);
            byte[] respBytes = client.UploadValues(url, fields);
            string resp = client.Encoding.GetString(respBytes);
        }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top