質問

So I'm trying to make a multipart-form POST and I want to attach a org.apache.http.entity.mime.content.FileBody to the MultipartEntity that I'm going to be posting. Now I've got the raw string file data that I want to populate the FileBody with already. However, this project is using Google App Engine which prohibits every way I've seen of generating the FileBody. Anyone know how to create a FileBody object and populate it in GAE?

役に立ちましたか?

解決

So just ignore FileBody. You want to use the method MultipartEntity.addPart(ContentBody content). This works with FileBody, because FileBody's parent class implements ContentBody.

ContentBody is a super simple interface with just two methods. Create a class that implements it, create an instance of your class, and pass it in to the addPart method.

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top