我对Documents List API有疑问。
我们在内部系统中使用Docs api。该系统使用WebLogic(Oracle)。
Docs api非常适合基本功能,如创建,列表等。
但是文件上传功能在webLogic上有一些问题。
在其他环境中没有问题。(我们在Tomcat& Jave测试过。)
这是我的来源和错误日志。
**来源**
private DocumentListEntry uploadGoogleDocumentFile(String url,
String file, DocsUploadProgressListener listener, int progressUpdateInterval)
throws IOException, ServiceException, InterruptedException {
// Pool for handling concurrent upload tasks
ExecutorService executor = Executors.newFixedThreadPool(MAX_CONCURRENT_UPLOADS);
File f = new File(file);
MediaFileSource mediaFile = getMediaFileSource(file);
mediaFile.setContentLength(f.length());
ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(service, new URL(url), mediaFile, null)
.title(mediaFile.getName())
.chunkSize(DEFAULT_CHUNK_SIZE).executor(executor)
.trackProgress(listener, progressUpdateInterval)
.build();
uploader.addHeader("Content-Length", f.length()+"");
uploader.start(); <-- error point
// Wait for completion.
listener.await();
// Thread clean up.
executor.shutdownNow();
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
if(uploader.isDone())
return uploader.getResponse(DocumentListEntry.class);
else
return null;
}
**错误消息**
<html lang=en>
错误411(需要长度)!! 1 {margin:0; padding:0} html,代码{font:15px / 22px arial,sans-serif} html {background:#fff; color:#222; padding:15px} body {margin:7%auto 0;最大宽度:390px;最小高度:180px;填充:30px 0 15px} &gt; body {background:url(// www.google.com/images/errors/robot.png)100%5px no-repeat; padding-right:205px} p {margin:11px 0 22px; overflow:hidden} ins {color :#777; text-decoration:none}一个img {border:0} @media屏幕和(max-width:772px){body {background:none; margin-top:0; max-width:none; padding-right :0}}
411。那是一个错误。
POST请求需要Content-length
标头。那个?셲我们都知道。
在com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:632)
在com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:564)
在com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:560)
在com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:538)
在com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:536)
在com.google.gdata.client.media.MediaService.createResumableUploadSession(MediaService.java:630)
在com.google.gdata.client.media.ResumableGDataFileUploader $ Builder.build(ResumableGDataFileUploader.java:250)
在com.posco.google.documents.v3.DocumentsCore.uploadGoogleDocumentFile(DocumentsCore.java:530)
在com.posco.google.documents.v3.DocumentsCore.uploadGoogleDocumentFiles(DocumentsCore.java:496)
在com.posco.google.documents.v3.V3DocumentsManager.uploadFile(V3DocumentsManager.java:171)
在com.kcube.lib.repo.GoogleDocsRepository.store(GoogleDocsRepository.java:117)
在com.kcube.mov.ptube.PtubeItemManager.updateAttach(PtubeItemManager.java:98)
在com.kcube.mov.ptube.PtubeItemUser $ GoogleDocsDaemon.execute(PtubeItemUser.java:182)
在com.kcube.sys.daemon.Daemon.run(Daemon.java:27)