我正在一个Java项目中集成Evernote服务。现在,我能够保存,更新笔记,但是我想做的就是搜索笔记。现在,由于evernote与我们的基础架构绑定在一起,我想保存一个对象的ID,该对象的文本将被复制到Evernote。

因此,无论何时更新文本,我都希望从Evernote获得相同的Note并更新其内容。
这是我面临的两个问题:


将我们的主键ID保存在Note对象中。使用GUID对其进行了尝试,它被保存下来,因为我可以在Sandbox中看到该注释,但不知道如何使用GUID搜索注释。如果不应该使用GUID,那么可以在何处保存可搜索的主键。
如第一点所述,应设置可搜索的属性或变量。


这是到目前为止我保存和搜索的一些代码:

Note note = new Note();
note.setTitle("New title");

String nBody = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
nBody += "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">";
nBody += "<en-note>" + "Test" + "</en-note>";
note.setContent(nBody);
note.setGuid("1234");

Note savedNote =   noteStoreClient.createNote(note);


搜索代码:

NoteFilter noteFilter = new NoteFilter();
// AS you can see, I have no idea what filter to set here.
//  noteFilter.getTagGuids(id);

NoteList noteList = noteStoreClient.findNotes(noteFilter,0,100);

List<Note> notes = noteList.getNotes();

for(Note note : notes){
    System.out.println("Note title is "+note.getTitle());
}


请让我知道我能做什么。非常感谢。 :-)

Udpate

当我尝试用自己创建的GUID保存GUID时,就会发生这种情况。
错误日志:

EDAMUserException(errorCode:BAD_DATA_FORMAT, parameter:Note.guid)

      at com.evernote.edam.notestore.NoteStore$getNote_result.read(NoteStore.java:13514)

      at com.evernote.edam.notestore.NoteStore$Client.recv_getNote(NoteStore.java:1346)

      at com.evernote.edam.notestore.NoteStore$Client.getNote(NoteStore.java:1316)

      at com.evernote.clients.NoteStoreClient.getNote(NoteStoreClient.java:368)

      at com.journaldev.spring.service.EvernoteServiceImpl.findNoteById(EvernoteServiceImpl.java:157)

最佳答案

创建便笺时,不能在便笺上设置手动分配的guid-guid由服务分配,并作为NoteStore上createNote调用的一部分返回到Note对象上。

顺便说一句,guid具有某种格式,请参见format here

关于java - Java,Evernote:按自定义ID搜索便笺,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35037528/

10-12 00:38
查看更多