2012-01-25 3 views
3

J'essaie d'utiliser HTTP POST pour envoyer des données à un serveur. Le serveur attend les données binaires dans $ _POST ['file'].Envoi binaire et Textdata via HTTP POST

 URL url = new URL("http://example.com"); 
     URLConnection connection = url.openConnection(); 
     connection.setDoOutput(true); 
     OutputStream outputStream = connection.getOutputStream(); 
     outputStream.write("file=".getBytes()); 

       //byte[] buffer contains the data 
      outputStream.write(buffer);   
     outputStream.close(); 

Est-ce que OutputStream.write est la bonne méthode pour écrire dans le flux? Dois-je gérer la chaîne ("file =") autre que le tampon?

Répondre

0

Oui, pour écrire du texte avec POST, vous devez écrire `OutputStream.

Pour les paramètres, vous devez créer une chaîne de paires clé-valeur (séparés par &) et écrire le tableau d'octets de ces données dans OutputStream comme suit:

String parameterString = "file=" + parameters.get("file") + "&" + "other=" + parameter.get("other"); 
outputStream.write(parameterString.getBytes("UTF-8"); //Don't forget, HTTP protocol supports UTF-8 encoding. 
outputStream.flush(); 

Pour faire fichier télécharger avec URLConnection, voir l'article de BalusC How to use java.net.URLConnection to fire and handle HTTP requests?

+0

Le problème est, que je dois envoyer le concent d'un fichier binaire. Je ne pense pas que je peux juste l'ajouter à "file =", puis-je? – Non

+0

Non, consultez ma publication mise à jour pour voir comment télécharger un fichier. –

2

Je recommande de convertir vos données en chaîne Base64 (Compatibilité avec tous les systèmes).

string result = Convert.ToBase64String(Encoding.UTF8.GetBytes(utf8Text));