C# 有道API翻譯 查詢單詞詳細信息

来源:https://www.cnblogs.com/kybs0/archive/2018/07/11/9133579.html
-Advertisement-
Play Games

有道雲官方文檔 有道雲翻譯API簡介:http://ai.youdao.com/docs/doc-trans-api.s#p01 有道雲C#Demo : http://ai.youdao.com/docs/doc-trans-api.s#p08 查詢單詞信息 在有道雲的Demo中,已經很完整的給出了 ...


有道雲官方文檔

有道雲翻譯API簡介:http://ai.youdao.com/docs/doc-trans-api.s#p01

有道雲C#Demo : http://ai.youdao.com/docs/doc-trans-api.s#p08

查詢單詞信息

在有道雲的Demo中,已經很完整的給出了相應的代碼~

但是針對是的英-漢等翻譯,如何只查詢單個單詞的詳細信息,包含單詞的翻譯/音標/釋義等?例如下圖示例信息:

 

 

下麵修改後封裝的查詢單詞詳細信息服務(僅供參考): 

 1     /// <summary>
 2     /// 有道詞典API
 3     /// </summary>
 4     internal class YouDaoApiService
 5     {
 6         const string AppKey = "131b76a4ee1ecd13";//AppKey和AppSecret是本人@Winter申請的賬號,僅供測試使用
 7         const string LangEn = "en";
 8         const string AppSecret = "KX9hLrgSMhfKkvIqS6nhwtwMcRymJqEA";
 9 
10         public static async Task<YouDaoTranslationResponse> GetTranslatioAsync(string queryText, string from = LangEn, string to = LangEn)
11         {
12             var requestUrl = GetRequestUrl(queryText, from, to);
13 
14             WebRequest translationWebRequest = WebRequest.Create(requestUrl);
15 
16             var response = await translationWebRequest.GetResponseAsync();
17 
18             using (Stream stream = response.GetResponseStream())
19             {
20                 using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException("有道Api查詢出錯!"), Encoding.GetEncoding("utf-8")))
21                 {
22                     string result = reader.ReadToEnd();
23                     var youDaoTranslationResponse = JsonConvert.DeserializeObject<YouDaoTranslationResponse>(result);
24 
25                     return youDaoTranslationResponse;
26                 }
27             }
28         }
29 
30         private static string GetRequestUrl(string queryText, string from, string to)
31         {
32             string salt = DateTime.Now.Millisecond.ToString();
33 
34             MD5 md5 = new MD5CryptoServiceProvider();
35             string md5Str = AppKey + queryText + salt + AppSecret;
36             byte[] output = md5.ComputeHash(Encoding.UTF8.GetBytes(md5Str));
37             string sign = BitConverter.ToString(output).Replace("-", "");
38 
39             var requestUrl = string.Format(
40                 "http://openapi.youdao.com/api?appKey={0}&q={1}&from={2}&to={3}&sign={4}&salt={5}",
41                 AppKey,
42                 HttpUtility.UrlDecode(queryText, System.Text.Encoding.GetEncoding("UTF-8")),
43                 from, to, sign, salt);
44 
45             return requestUrl;
46         }
47     }

 序列化解析的數據類:

 1     [DataContract]
 2     public class YouDaoTranslationResponse
 3     {
 4         [DataMember(Name = "errorCode")]
 5         public string ErrorCode { get; set; }
 6 
 7         [DataMember(Name = "query")]
 8         public string QueryText { get; set; }
 9 
10         [DataMember(Name = "speakUrl")]
11         public string InputSpeakUrl { get; set; }
12 
13         [DataMember(Name = "tSpeakUrl")]
14         public string TranslationSpeakUrl { get; set; }
15 
16         /// <summary>
17         /// 首選翻譯
18         /// </summary>
19         [DataMember(Name = "translation")]
20         public List<string> FirstTranslation { get; set; }
21 
22         /// <summary>
23         /// 基本釋義
24         /// </summary>
25         [DataMember(Name = "basic")]
26         public TranslationBasicData BasicTranslation { get; set; }
27 
28         ///// <summary>
29         ///// 網路釋義,該結果不一定存在,暫時不使用
30         ///// </summary>
31         //[DataMember(Name = "web")]
32         //public TranslationWebData WebTranslation { get; set; }
33     }
34 
35     /// <summary>
36     /// 基本釋義
37     /// </summary>
38     [DataContract]
39     public class TranslationBasicData
40     {
41         [DataMember(Name = "phonetic")]
42         public string Phonetic { get; set; }
43 
44         /// <summary>
45         /// 英式發音
46         /// </summary>
47         [DataMember(Name = "uk-phonetic")]
48         public string UkPhonetic { get; set; }
49 
50         /// <summary>
51         /// 美式發音
52         /// </summary>
53         [DataMember(Name = "us-phonetic")]
54         public string UsPhonetic { get; set; }
55 
56         /// <summary>
57         /// 翻譯
58         /// </summary>
59         [DataMember(Name = "explains")]
60         public List<string> Explains { get; set; }
61     }
62 
63     /// <summary>
64     /// 網路釋義
65     /// </summary>
66     [DataContract]
67     public class TranslationWebData
68     {
69         [DataMember(Name = "key")]
70         public string Key { get; set; }
71 
72         [DataMember(Name = "value")]
73         public List<string> Explains { get; set; }
74     }
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 正則表達式平時不常用,經常都是用的時候,臨時抱佛腳,查文檔,然後就是被各種坑之後,才會逐漸熟練。 線上正則表達式測試:http://tool.oschina.net/regex/ 線上JSON格式化:https://www.bejson.com/ 正則表達式手冊:http://tool.oschin ...
  • 開發工具:Visual Studio 2017 15.7.5 開發平臺:Windows 10 新建WebApi項目,Web.config配置文件中,system.web下級節點中預設沒有customErrors的配置,即customErrors預設是RemoteOnly `` mode 必選的屬性。 ...
  • XSS攻擊全稱跨站腳本攻擊,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的電腦安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。 比如我們在表單提交的時候插入腳本代碼 如果不進行 ...
  • 我們通過前面的二篇文章的學習,已經實現了文件上傳的主要功能,這一篇文章我們來學習如何把上傳文件的功能頁面添加到首面上面,以及刪除功能的實現 。 ...
  • 最近在做core的介面單元測試,所以在這拿出來分享一下,添加XUnit的nuget包 話不多說,直接上代碼了: ...
  • 系列目錄 一. 創建項目並集成swagger 1.1 創建 1.2 完善 二. 搭建項目整體架構 三. 集成輕量級ORM框架——SqlSugar 3.1 搭建環境 3.2 實戰篇:利用SqlSugar快速實現CRUD 3.3 生成實體類 四. 集成JWT授權驗證 五. 實現CORS跨域 源碼下載:h ...
  • 由於工作中需要對大量數據進行快速校驗,試驗採用讀入記憶體List實體採用lamdba查找來實現。 實際需求:實際讀入記憶體數據 50W條記錄主集數據,還包含約20個子集,子集最大記錄數300W條記錄。讀入記憶體,校驗出結果5分鐘之內完成。 測試數據讀入記憶體後占用約2-3G記憶體。這裡測試了多線程讀取數據,但 ...
  • 列表內容屬性 如上圖,是一個列表標題排序控制項,我們需要定義一個標題列表,從而讓調用方可以自由的設置標題信息。 在自定義控制項時,會遇到列表依賴屬性,那麼該如何定義呢? 下麵是錯誤的定義方式: 按照如上依賴屬性的定義, 必須提供一個預設屬性new List<HeaderContent>() 或者 在自定 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...