使用“DocumentListEntry.updateMedia()”方法时遇到GData API问题

时间:2011-10-04 16:43:13

标签: java gdata

我正在使用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)

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我发现缺少命令“documentList.setETag(String)”。然后我设置一个'*'字符,它有效!

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