Je rencontre des problèmes d'envoi POST Demande en C # et il semble que j'ai mal compris certains bases HTTP. Donc, je mettant en œuvre le service RESTFULL client, qui fonctionne comme suit :
J'utilise WebRequest
pour faire des demandes d'obtenir (avec l'en-tête d'autorisation) et que cela fonctionne. Mais lorsque j'utilise le code suivant pour effectuer des demandes de vente, le service donne "l'échec de l'authentification - non connecté" message:
String url = String.Format("{0}/{1}", AN_SERVER, app);
WebRequest theRequest = WebRequest.Create(url);
theRequest.Method = "POST";
theRequest.ContentType = "text/x-json";
theRequest.ContentLength = json.Length;
Stream requestStream = theRequest.GetRequestStream();
requestStream.Write(Encoding.ASCII.GetBytes(json), 0, json.Length);
requestStream.Close();
theRequest.Headers.Add("Authorization", authToken);
HttpWebResponse response = (HttpWebResponse)theRequest.GetResponse();
Je dois faire une erreur mineure (au moins j'espère donc) tout en envoyant POST Demande. Alors, que dois-je faire mal?
Merci.
Enfiler les en-têtes avant la requête Works Steam (selon le commentaire de AI W), car le flux de demande ajoute le corps.
La manière dont WebRequest est implémentée en interne, vous devez terminer l'en-tête avant d'écrire le corps et une fois que c'est au format de flux, il est prêt à envoyer.
Si vous examinez la mise en œuvre de WebRequest dans le réflecteur ou un tel outil de décompilation, vous pourrez voir la logique.
J'espère que cela t'aides