2013-07-25 4 views
0

Donc j'essaye de faire un POST en multipart et je veux attacher un org.apache.http.entity.mime.content.FileBody au MultipartEntity que je '' Je vais poster. Maintenant, j'ai les données de fichier de chaîne brute que je veux remplir le FileBody avec déjà. Cependant, ce projet utilise Google App Engine qui interdit toutes les façons que j'ai vues de générer le FileBody. Quelqu'un sait comment créer un objet FileBody et le peupler dans GAE?Comment créer un org.apache.http.entity.mime.content.FileBody lorsque vous utilisez Google App Engine

+0

Quels moyens avez-vous vu interdire, et avec lequel les erreurs/avertissements? – hexafraction

+0

Il vous empêche d'utiliser des classes qui peuvent écrire dans des fichiers, tels que FileWriter et FileOutputStream. Vous devez créer un objet java.io.File pour créer un objet FileBody. – Dangerbunny

+0

Fondamentalement, il ne vous permet pas d'écrire sur la machine locale de l'utilisateur. Je me demande s'il existe un moyen de créer et de remplir un objet java.io.File sans écrire sur la machine locale de l'utilisateur – Dangerbunny

Répondre

0

Donc, ignorez simplement FileBody. Vous souhaitez utiliser la méthode MultipartEntity.addPart (contenu ContentBody). Cela fonctionne avec FileBody, car la classe parente de FileBody implémente ContentBody. ContentBody est une interface super simple avec deux méthodes seulement. Créez une classe qui l'implémente, créez une instance de votre classe et transmettez-la à la méthode addPart.

public ByteContentBody implements ContentBody { 
    private String name; 
    private byte[] data; 

    public ByteContentBody(String name, byte[] data) { 
    this.name = name; 
    this.data = data; 
    } 

    public String getFilename(){ 
    returns name; 
    } 

    public void writeTo(OutputStream out) throws IOException { 
    out.write(data); 
    } 
} 

http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html

http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/content/ContentBody.html

+0

Merci, c'est ce que j'ai fini par utiliser, mais avec l'objet apache HttpClient et HttpPost pour faciliter la publication bien – Dangerbunny