2009-11-17 6 views
0

J'essaie d'envoyer une requête HTTP POST complexe à un service Web. Le service Web a été créé à l'aide de VS2008, dans lequel vous pouvez définir VS pour créer des interfaces HTTP POST et GET à côté de l'interface SOAP.HTTP POST et structures complexes

Maintenant, la requête demande les deux paramètres de chaîne (nom d'utilisateur, description du fichier, etc.) et le fichier lui-même, représenté par Base64Binary. Lorsque vous créez des services Web dans VS (pas les services Web asp.net) et que vous les configurez pour accepter la requête HTTP POST, est-il possible d'envoyer des requêtes HTTP POST contenant à la fois des paramètres de chaîne et des données binaires?

Répondre

0

Vous pouvez obtenir vos octets et convertir en une chaîne base64 en utilisant la méthode Convert.ToBase64String(). Ainsi, vous obtiendrez:

string base64 = Convert.ToBase64String(File.ReadAllBytes("yourfile.ext")); 

Si vous parlez comment envoyer, vous pouvez utiliser HttpWebRequest, comme ceci:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("service.asmx"); 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
using (Stream post = request.GetRequestStream()) 
{ 
    string querystring = // note you must encode that values 
       "name=" + HttpUtility.UrlEncode(name) + 
       "&desc=" + HttpUtility.UrlEncode(description) + 
       "&data=" + HttpUtility.UrlEncode(base64); 
    byte[] data = Encoding.UTF8.GetBytes(querystring); 
    post.Write(data, 0, data.Length); 
} 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
Console.WriteLine(new StreamReader(response.GetResponseStream()).ReadToEnd()); 
+0

J'ai essayé votre code mais je reçois encore erreur de serveur (500). J'ai reformulé ma question. –