Comment écrire une requête HTTP
Bonjour j'essaie d'écrire une Requête HTTP en C# (Post), mais j'ai besoin d'aide avec une erreur
Expl: je veux envoyer le Contenu d'un DLC Fichier sur le Serveur et recevoir le contenu décrypté.
De Code C#
public static void decryptContainer(string dlc_content)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://dcrypt.it/decrypt/paste");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
using (StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII))
{
writer.Write("content=" + dlc_content);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(reader.ReadToEnd());
}
}
et ici j'ai eu la demande html
<form action="/decrypt/paste" method="post">
<fieldset>
<p class="formrow">
<label for="content">DLC content</label>
<input id="content" name="content" type="text" value="" />
</p>
<p class="buttonrow"><button type="submit">Submit »</button></p>
</fieldset>
</form>
Message D'Erreur:
{
"form_errors": {
"__all__": [
"Sorry, an error occurred while processing the container."
]
}
}
Serait très utile si quelqu'un pouvait m'aider à résoudre le problème!
source d'informationauteur Googles | 2011-10-26
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas content-length, ce qui peut entraîner des problèmes. Vous pouvez aussi essayer d'écrire des octets directement à la rivière au lieu de les convertir en ASCII premier.. (faire l'inverse de la façon dont vous le faites en ce moment), par exemple:
J'ai personnellement trouvé l'affichage de ce type à être un peu "fidgity" dans le passé. Vous pouvez également essayer de définir le ProtocolVersion sur la demande.
Je voudrais simplifier votre code, comme ceci:
Il s'assure également que les paramètres de la requête sont correctement codés.
Il pourrait encore être un problème avec ce qui est réellement envoyé.
Seul problème que je vois est que vous avez besoin de les encoder la valeur de la
content
paramètre. UtilisationHttpUtility.UrlEncode()
.Autre que cela, il pourrait y avoir d'autres questions, mais il est difficile de dire ne sachant pas ce service. L'erreur est trop générique et pourrait signifier quelque chose
demande.ContentLength doit être définie en tant que bien.
Aussi, est-il une raison pour laquelle vous êtes le codage ASCII vs UTF8?
Obtenir le flux associés à la réponse en premier, puis passez-la dans le Streamreader comme ci-dessous:
Que je ne peux pas commenter sur la solution de Jon Hanna. Cela a résolu pour moi:
Uri.EscapeDataString