google-api-java-client是Android上一个很好的网络服务api客户端,但我的意思是一个问题并花费大量时间。
我想通过POST方法上传文件,因此我研究了google-drive API源代码,但它使用媒体上传程序将文件上传到google驱动器。
那么如何通过google-api-java-client中的POST方法上传文件?
例如,Imgur上传API方法有两个require参数。假设用google-api-java-client编写的上传文件API就像这样,但我不知道如何填写标有???的public class ImgurImage extends GenericJson {
@com.google.api.client.util.Key("key")
private String mKey;
@com.google.api.client.util.Key("image")
private ??? mImage
}
public class Upload extends JsonHttpRequest {
private static final String REST_PATH = "/2/upload.json"
private Upload(ImgurImage content) {
super(ImgurClient.this, HttpMethod.POST, REST_PATH, content);
}
public void execute() throws IOException {
executeUnparsed();
}
}
答案 0 :(得分:1)
我建议您在http://samples.google-api-java-client.googlecode.com/hg/drive-cmdline-sample/instructions.html
查看我们的Drive API示例以下是代码段:
private static final java.io.File UPLOAD_FILE = new java.io.File(UPLOAD_FILE_PATH);
/** Uploads a file using either resumable or direct media upload. */
private static File uploadFile(boolean useDirectUpload) throws IOException {
File fileMetadata = new File();
fileMetadata.setTitle(UPLOAD_FILE.getName());
InputStreamContent mediaContent = new InputStreamContent("image/jpeg", new BufferedInputStream(
new FileInputStream(UPLOAD_FILE)));
mediaContent.setLength(UPLOAD_FILE.length());
Drive.Files.Insert insert = drive.files().insert(fileMetadata, mediaContent);
MediaHttpUploader uploader = insert.getMediaHttpUploader();
uploader.setDirectUploadEnabled(useDirectUpload);
uploader.setProgressListener(new FileUploadProgressListener());
return insert.execute();
}
答案 1 :(得分:0)
我使用httpClient并使用FileBody将文件发送到服务器,作为MultiPartEntity的一部分。这适用于Picasa,Flickr等。
答案 2 :(得分:0)
看起来您采用的是上传文本的示例(内容中的json,REST URL端点中的json)并使用它来尝试上传图片(上传(ImgurImage))。
那么,看看'GenericJson.upload(ImgurImage)'的来源......
了解在POST上调用'exec'之前设置'content'字段时此方法的作用。
了解这些框架将允许内容中的字符串和文本,或允许图像和音频类型上传的位图(字节)。
查找设置'content'的处理程序,并了解它如何处理json样本的字节和字符串。
应该可以帮助您使用您选择的框架。