Java, Evernote : 通过自分配的 ID 搜索笔记
Java, Evernote : Searching notes by self-assigned ID
我正在开展一个 Java 项目,我正在其中集成 Evernote 服务。现在,我可以保存、更新笔记,但我想做的是搜索笔记。现在,由于 evernote 与我们的基础设施相关联,我想保存我们要将其文本复制到 Evernote 的对象的 ID。
因此,每当文本更新时,我都想从 Evernote 获取相同的笔记并更新其内容。
这是我面临的两个问题:
- 在 Note 对象中保存我们的主键 ID。用 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());
}
请告诉我我能做什么。非常感谢。 :-)
更新
当我尝试用我自己随机创建的 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 调用的一部分在笔记对象上返回。
顺便说一句,guid 有一定的格式,请参阅 format here。
我正在开展一个 Java 项目,我正在其中集成 Evernote 服务。现在,我可以保存、更新笔记,但我想做的是搜索笔记。现在,由于 evernote 与我们的基础设施相关联,我想保存我们要将其文本复制到 Evernote 的对象的 ID。
因此,每当文本更新时,我都想从 Evernote 获取相同的笔记并更新其内容。 这是我面临的两个问题:
- 在 Note 对象中保存我们的主键 ID。用 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());
}
请告诉我我能做什么。非常感谢。 :-)
更新
当我尝试用我自己随机创建的 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 调用的一部分在笔记对象上返回。
顺便说一句,guid 有一定的格式,请参阅 format here。