我正在使用来自GData API的DocumentListEntry的updateMedia(boolean)方法。
有时,此命令有效,但在大多数情况下会引发异常。

代码(documentList是一个DocumentListEntry对象):

public void flush() throws IOException {
    try {
        if(((ByteArrayOutputStream)os).size()>0){
            documentList.setMediaSource(
                    new MediaByteArraySource(((ByteArrayOutputStream)os).toByteArray(), mimeType));
            documentList.updateMedia(true);
            ((ByteArrayOutputStream)os).reset();
        }
    } catch (ServiceException ex) {
        throw new IOException(ex);
    }
}


命令“ documentList.updateMedia(true);”抛出此异常:

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
        at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:162)
        at com.ralph.agente.Agent.run(Agent.java:191)
        at com.ralph.agente.Agent.run(Agent.java:134)
        at company.google.conexao.RecebeObjetoThread.geraSinaisVitaisAgent(RecebeObjetoThread.java:61)
        at company.google.conexao.RecebeObjetoThread.run(RecebeObjetoThread.java:133)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException: com.google.gdata.util.InvalidEntryException: Unexpected resource version ID
<errors xmlns='http://schemas.google.com/g/2005'><error><domain>GData</domain><code>invalidResourceVersion</code><internalReason>Unexpected resource version ID</internalReason></error></errors>

        at com.company.google.io.GoogleDocsOutputStream.flush(GoogleDocsOutputStream.java:142)
        at com.company.google.io.GoogleDocsOutputStream.close(GoogleDocsOutputStream.java:148)
        at br.edu.company.google.processo.GeraSinaisVitaisAgent.bodyAgent(GeraSinaisVitaisAgent.java:133)
        ... 11 more
Caused by: com.google.gdata.util.InvalidEntryException: Unexpected resource version ID
<errors xmlns='http://schemas.google.com/g/2005'><error><domain>GData</domain><code>invalidResourceVersion</code><internalReason>Unexpected resource version ID</internalReason></error></errors>

        at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:594)
        at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563)
        at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552)
        at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530)
        at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:535)
        at com.google.gdata.client.Service.update(Service.java:1563)
        at com.google.gdata.client.Service.update(Service.java:1530)
        at com.google.gdata.client.GoogleService.update(GoogleService.java:583)
        at com.google.gdata.client.media.MediaService.update(MediaService.java:484)
        at com.company.google.io.GoogleDocsOutputStream.flush(GoogleDocsOutputStream.java:137)


有人可以帮我吗?

最佳答案

我发现缺少命令“ documentList.setETag(String)”。然后,我设置一个“ *”字符,它可以正常工作!

参考:http://code.google.com/p/gdata-java-client/issues/detail?id=250#c0

10-08 18:08