91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java讀取Evernote中如何使用DeveloperToken

發布時間:2021-12-04 15:12:56 來源:億速云 閱讀:120 作者:小新 欄目:云計算

這篇文章主要為大家展示了“Java讀取Evernote中如何使用DeveloperToken”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Java讀取Evernote中如何使用DeveloperToken”這篇文章吧。

  1. 首先我們需要在Evernote的sandbox環境注冊一個賬戶,https://sandbox.evernote.com/Registration.action

  2. 有賬戶,如果希望使用java讀取賬戶的信息,我們還需要申請一個Token,也就是一個授權碼,有了授權,我們才能從賬戶里那東西。https://sandbox.evernote.com/api/DeveloperToken.action

  3. 開發準備就緒,下面創建一個Maven項目,引入Evernote API

  • 創建Maven項目:

    mvn archetype:generate -DgroupId=com.yotoo.app -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


  • 添加evernote  jdk依賴:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.yotoo.app</groupId>
        <artifactId>simple</artifactId>
        <packaging>jar</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>simple</name>
        <url>http://maven.apache.org</url>
        <dependencies>
            <dependency>
                <groupId>com.evernote</groupId>
                <artifactId>evernote-api</artifactId>
                <version>1.25.1</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>


          4. 把項目導入Intellij IDEA或Eclipse隨你喜歡,創建一個HelloEvernote類

        HelloEvernote類


  • package com.yotoo.app;
    
    import com.evernote.auth.EvernoteAuth;
    import com.evernote.auth.EvernoteService;
    import com.evernote.clients.ClientFactory;
    import com.evernote.clients.NoteStoreClient;
    import com.evernote.clients.UserStoreClient;
    import com.evernote.edam.error.EDAMErrorCode;
    import com.evernote.edam.error.EDAMSystemException;
    import com.evernote.edam.error.EDAMUserException;
    import com.evernote.edam.notestore.NoteFilter;
    import com.evernote.edam.notestore.NoteList;
    import com.evernote.edam.type.*;
    import com.evernote.thrift.transport.TTransportException;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.security.MessageDigest;
    import java.util.Iterator;
    import java.util.List;
    
    public class HelloEvernote {
    
      // 去這里申請一個 Token https://sandbox.evernote.com/api/DeveloperToken.action
      private static final String AUTH_TOKEN = "填寫授權Token";
    
      private UserStoreClient userStore;
      private NoteStoreClient noteStore;
      private String newNoteGuid;
    
      public static void main(String args[]) throws Exception {
        String token = System.getenv("AUTH_TOKEN");
        if (token == null) {
          token = AUTH_TOKEN;
        }
        if ("".equals(token)) {
          System.err.println("去這里申請一個Token https://sandbox.evernote.com/api/DeveloperToken.action");
          return;
        }
    
        HelloEvernote demo = new HelloEvernote(token);
        try {
          demo.listNotes();
          demo.createNote();
          demo.searchNotes();
          demo.updateNoteTag();
        } catch (EDAMUserException e) {
          // 需要處理的異常
          if (e.getErrorCode() == EDAMErrorCode.AUTH_EXPIRED) {
            System.err.println("授權的Token已經過期!");
          } else if (e.getErrorCode() == EDAMErrorCode.INVALID_AUTH) {
            System.err.println("無效的授權Token!");
          } else if (e.getErrorCode() == EDAMErrorCode.QUOTA_REACHED) {
            System.err.println("無效的授權Token!");
          } else {
            System.err.println("錯誤: " + e.getErrorCode().toString()
                + " 參數: " + e.getParameter());
          }
        } catch (EDAMSystemException e) {
          System.err.println("系統錯誤: " + e.getErrorCode().toString());
        } catch (TTransportException t) {
          System.err.println("網絡錯誤:" + t.getMessage());
        }
      }
    
      /**
       * 初始化 UserStore and NoteStore 客戶端
       */
      public HelloEvernote(String token) throws Exception {
        // 設置 UserStore 的客戶端并且檢查和服務器的連接
        EvernoteAuth evernoteAuth = new EvernoteAuth(EvernoteService.SANDBOX, token);
        ClientFactory factory = new ClientFactory(evernoteAuth);
        userStore = factory.createUserStoreClient();
    
        boolean versionOk = userStore.checkVersion("Evernote EDAMDemo (Java)",
            com.evernote.edam.userstore.Constants.EDAM_VERSION_MAJOR,
            com.evernote.edam.userstore.Constants.EDAM_VERSION_MINOR);
        if (!versionOk) {
          System.err.println("不兼容的Evernote客戶端協議");
          System.exit(1);
        }
    
        // 設置 NoteStore 客戶端
        noteStore = factory.createNoteStoreClient();
      }
    
      /**
       * 獲取并顯示用戶的筆記列表
       */
      private void listNotes() throws Exception {
        // 列出用戶的Notes
        System.out.println("Listing notes:");
    
        // 首先,獲取一個筆記本的列表
        List<Notebook> notebooks = noteStore.listNotebooks();
    
        for (Notebook notebook : notebooks) {
          System.out.println("Notebook: " + notebook.getName());
    
          // 然后,搜索筆記本中前100個筆記并按創建日期排序
          NoteFilter filter = new NoteFilter();
          filter.setNotebookGuid(notebook.getGuid());
          filter.setOrder(NoteSortOrder.CREATED.getValue());
          filter.setAscending(true);
    
          NoteList noteList = noteStore.findNotes(filter, 0, 100);
          List<Note> notes = noteList.getNotes();
          for (Note note : notes) {
            System.out.println(" * " + note.getTitle());
          }
        }
        System.out.println();
      }
    
      /**
       * 創建一個新的筆記
       */
      private void createNote() throws Exception {
        // 創建一個新的筆記對象,并填寫相關內容,比如標題等
        Note note = new Note();
        note.setTitle("Yotoo的Demo演示:通過Java創建一個新的筆記");
    
        String fileName = "enlogo.png";
        String mimeType = "image/png";
    
        // 給筆記添加一個附件,比如圖片;首先創建一個資源對象,然后設置相關屬性,比如文件名
        Resource resource = new Resource();
        resource.setData(readFileAsData(fileName));
        resource.setMime(mimeType);
        ResourceAttributes attributes = new ResourceAttributes();
        attributes.setFileName(fileName);
        resource.setAttributes(attributes);
    
        //現在,給新的筆記增加一個新的資源對象
        note.addToResources(resource);
    
        // 這個資源對象作為筆記的一部分顯示
        String hashHex = bytesToHex(resource.getData().getBodyHash());
    
        // Evernote筆記的內容是通過ENML(Evernote Markup Language)語言生成的。
        // 在這里可以了解具體的說明 http://dev.evernote.com/documentation/cloud/chapters/ENML.php
        String content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
            + "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">"
            + "<en-note>"
            + "<span style=\"color:green;\">Evernote的圖標在這里,很綠奧!</span><br/>"
            + "<en-media type=\"image/png\" hash=\"" + hashHex + "\"/>"
            + "</en-note>";
        note.setContent(content);
    
        // 最后,使用createNote方法,發送一個新的筆記給Evernote。
        // 返回的新筆記對象將包含服務器生成的屬性,如新筆記的的GUID
        Note createdNote = noteStore.createNote(note);
        newNoteGuid = createdNote.getGuid();
    
        System.out.println("成功創建一個新的筆記,GUID為:" + newNoteGuid);
        System.out.println();
      }
    
      /**
       * 查詢用戶的筆記并顯示結果
       */
      private void searchNotes() throws Exception {
        // 搜索的格式需要根據Evernote搜索語法,
        // 參考這里http://dev.evernote.com/documentation/cloud/chapters/Searching_notes.php
    
        // 在這個例子中,我們搜索的標題中包含Yotoo
        String query = "intitle:Yotoo";
    
        // 搜索的筆記中包含具體標簽,我可以使用這個:
        // String query = "tag:tagname";
        // 搜索任何位置包含"Yotoo"的筆記,可以使用:
        // String query = "Yotoo";
    
        NoteFilter filter = new NoteFilter();
        filter.setWords(query);
        filter.setOrder(NoteSortOrder.UPDATED.getValue());
        filter.setAscending(false);
    
        // 查詢前50個滿足條件的筆記
        System.out.println("滿足查詢條件的筆記: " + query);
        NoteList notes = noteStore.findNotes(filter, 0, 50);
        System.out.println("找到 " + notes.getTotalNotes() + " 個筆記");
    
        Iterator<Note> iter = notes.getNotesIterator();
        while (iter.hasNext()) {
          Note note = iter.next();
          System.out.println("筆記: " + note.getTitle());
    
          // 通過findNotes()返回的Note對象,僅包含筆記的屬性,標題,GUID,創建時間等,但筆記的內容和二進制數據都省略了;
          // 獲取筆記的內容和二進制資源,可以調用getNote()方法獲取
          Note fullNote = noteStore.getNote(note.getGuid(), true, true, false,
              false);
          System.out.println("筆記包含 " + fullNote.getResourcesSize()
              + " 個資源對象");
          System.out.println();
        }
      }
    
      /**
       * 更新標簽分配給一個筆記。這個方法演示了如何調用updateNote方法發送被修改字段
       */
      private void updateNoteTag() throws Exception {
        // 當更新一個筆記時,只需要發送已經修改的字段。
        // 例如,通過updateNote發送的Note對象中沒有包含資源字段,那么Evernote服務器不會修改已經存在的資源屬性
        // 在示例代碼中,我們獲取我們先前創建的筆記,包括 筆記的內容和所有資源。
        Note note = noteStore.getNote(newNoteGuid, true, true, false, false);
    
        //現在,更新筆記。復原內容和資源,因為沒有修改他們。我們要修改的是標簽。
        note.unsetContent();
        note.unsetResources();
    
        // 設置一個標簽
        note.addToTagNames("TestTag");
    
        // 現在更新筆記,我們沒有設置內容和資源,所以他們不會改變
        noteStore.updateNote(note);
        System.out.println("成功增加標簽");
    
        // 證明一下我們沒有修改筆記的內容和資源;重新取出筆記,它仍然只有一個資源(圖片)
        note = noteStore.getNote(newNoteGuid, false, false, false, false);
        System.out.println("更新以后, 筆記有 " + note.getResourcesSize()
            + " 個資源");
        System.out.println("更新以后,筆記的標簽是: ");
        for (String tagGuid : note.getTagGuids()) {
          Tag tag = noteStore.getTag(tagGuid);
          System.out.println("* " + tag.getName());
        }
    
        System.out.println();
      }
        /**
         * 從磁盤讀取文件的內容并創建數據對象
         */
        private static Data readFileAsData(String fileName) throws Exception {
            String filePath = new File(HelloEvernote.class.getResource(
                    "com.yotoo.app.HelloEvernote.class").getPath()).getParent()
                    + File.separator + fileName;
            // 讀取文件的二進制內容
            FileInputStream in = new FileInputStream(filePath);
            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
            byte[] block = new byte[10240];
            int len;
            while ((len = in.read(block)) >= 0) {
                byteOut.write(block, 0, len);
            }
            in.close();
            byte[] body = byteOut.toByteArray();
    
            // 創建一個新的包含文件內容的二進制對象
            Data data = new Data();
            data.setSize(body.length);
            data.setBodyHash(MessageDigest.getInstance("MD5").digest(body));
            data.setBody(body);
    
            return data;
        }
    
      /**
       * 把byte數組轉換成hexadecimal字符串
       */
      public static String bytesToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte hashByte : bytes) {
          int intVal = 0xff & hashByte;
          if (intVal < 0x10) {
            sb.append('0');
          }
          sb.append(Integer.toHexString(intVal));
        }
        return sb.toString();
      }
    }


    5. 把Evernote的圖標放在HelloEvernote 類的同級目錄。 

    6. 執行一下看看,如果在Evernote賬戶下創建了一個新的筆記,說明已經學會啦。

以上是“Java讀取Evernote中如何使用DeveloperToken”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荃湾区| 嵊泗县| 和平区| 宿松县| 镇原县| 麟游县| 化德县| 临西县| 沅陵县| 株洲市| 铁岭市| 内江市| 保定市| 冕宁县| 会理县| 班玛县| 新干县| 昭觉县| 天峨县| 德钦县| 自贡市| 皋兰县| 军事| 墨竹工卡县| 凤阳县| 陆河县| 万源市| 韩城市| 镇康县| 永定县| 肃北| 扬州市| 张北县| 耒阳市| 卓资县| 桑日县| 青阳县| 独山县| 哈巴河县| 高要市| 彭泽县|