Async requête POST en C# .NET
Je suis en train de télécharger des données sur le réseau à l'aide de HttpClient /HttpContent
Cependant, je n'arrive pas à trouver une bonne façon d'envoyer un fichier de cette façon.
Voici mon code actuel:
private async Task<APIResponse> MakePostRequest(string RequestUrl, string Content)
{
HttpClient httpClient = new HttpClient();
HttpContent httpContent = new StringContent(Content);
APIResponse serverReply = new APIResponse();
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
try {
Console.WriteLine("Sending Request: " + RequestUrl + Content);
HttpResponseMessage response = await httpClient.PostAsync(RequestUrl, httpContent).ConfigureAwait(false);
}
catch (HttpRequestException hre)
{
Console.WriteLine("hre.Message");
}
return (serverReply);
}
Contenu est une chaîne de caractères de la forme: paramname=valeur¶m2name=valeur¶m3name=valeur..
Le Point est que je dois envoyer un fichier (photo) au cours de cette demande.
Il semble bien fonctionner pour chacun des paramètres, mais le fichier lui-même (j'ai envoyer deux authentification des clés dans la requête post, et ils sont reconnus)
Je procède de cette façon pour récupérer l'image comme une chaîne de caractères qui peut être une des principales raisons de panne ? :/
byte[] PictureData = File.ReadAllBytes(good_path);
string encoded = Convert.ToBase64String(PictureData);
Je fais quelque chose de mal ? Est-il une autre et meilleure façon de créer une bonne requête POST (il doit être asynchrone et le soutien de téléchargement de fichier)
Grâce.
OriginalL'auteur MagiKruiser | 2013-03-29
Vous devez vous connecter pour publier un commentaire.
Principal problème est probablement venir du fait que je n'étais mélange de chaîne et le fichier de données.
Cette résolu:
Principalement à l'aide de plusieurs parties du Contenu, le réglage du Type de Contenu et en passant par un tableau d'octets semblent avoir fait le travail.
OriginalL'auteur MagiKruiser
Avez-vous besoin d'envoyer les données sous forme de chaîne base64? Si vous envoyez arbitraire d'octets (c'est à dire, une photo de), vous pouvez les envoyer en clair, si vous utilisez le
ByteArrayContent
classe:Oui, c'est important. Comment le serveur s'attendre à la chaîne et les paramètres de tableau? Les en-têtes HTTP, comme une partie du corps, d'une autre façon? Le client doit envoyer la demande en sorte que le serveur attend.
OriginalL'auteur carlosfigueira