百度翻譯API整合SpringBoot

案例背景,按照官方給的Demo,實在是太啰嗦了,

大致步驟

封裝數據>簽名>發送請求,

仔細一看劈里啪啦一大堆,最后還要手動關流關連接,難道整合到SpringBoot項目里面我還得為內存管理考慮

所以就有了如下需求

使用

RestTemplate的對象進行發送請求數據,RestTemplate由springboot自行管理
package com.example.demo2.baidu2;import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;public class Trans {private static final String APP_ID = "自己的APPID";private static final String SECURITY_KEY = "自己的密鑰";private static final String TRANS_API_HOST = "http://api.fanyi.baidu.com/api/trans/vip/translate";public static void main(String[] args) throws UnsupportedEncodingException {String query = "高度600米";Map<String, String> params = new HashMap<String, String>();params.put("q", query);params.put("from", "auto");params.put("to", "en");params.put("appid", APP_ID);// 隨機數String salt = String.valueOf(System.currentTimeMillis());params.put("salt", salt);// 簽名String src = APP_ID + query + salt + SECURITY_KEY; // 加密前的原文String md5 = getMD5(src);md5= md5.toLowerCase();params.put("sign", md5);String s = get(TRANS_API_HOST, params);System.out.println(s);}public static String get(String host, Map<String, String> params2) throws UnsupportedEncodingException {MultiValueMap<String, String> params = new LinkedMultiValueMap<>();HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);String s = params2.get("q");String salt = params2.get("salt");String appid = params2.get("appid");String to = params2.get("to");String from = params2.get("from");String sign = params2.get("sign");//        String encode = URLEncoder.encode(s, "UTF-8");params.add("salt",salt);params.add("appid",appid);params.add("to",to);params.add("from",from);params.add("q",s);params.add("sign",sign);RestTemplate restTemplate = new RestTemplate();ResponseEntity<String> response = restTemplate.exchange(host, HttpMethod.POST, requestEntity, String.class);int statusCode = response.getStatusCodeValue();if (statusCode != 200) {System.out.println("Http錯誤碼:" + statusCode);}return response.getBody();}public static String getMD5(String s) {char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};try {byte[] btInput = s.getBytes(StandardCharsets.UTF_8);MessageDigest mdInst = MessageDigest.getInstance("MD5");mdInst.update(btInput);byte[] md = mdInst.digest();int j = md.length;char[] str = new char[j * 2];int k = 0;for (byte byte0 : md) {str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);} catch (Exception e) {e.printStackTrace();return null;}}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36668.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis緩存刪除略和內存淘汰策略及LRU

1、Redis內存若在配置文件中未設置&#xff0c;內存會無限制增長&#xff0c;直到超出物理內存&#xff0c;拋出out of memory內存耗盡異常 解決方法&#xff0c;調整maxmemory參數&#xff0c;一般設置為物理內存的3/4&#xff0c;并且添加緩存刪除策略 2、Redis對于設置了過…

項目經理的會議之道:全參與還是精選參與?

引言 在項目管理中&#xff0c;會議是一個常見的工具&#xff0c;用于溝通信息、解決問題、做出決策等。然而&#xff0c;項目經理是否需要參加所有的會議呢&#xff1f;這是一個值得深思的問題。作為項目經理&#xff0c;我們需要權衡會議的重要性和我們的時間管理。我們不能…

【第一階段】kotlin的函數

函數頭 fun main() {getMethod("zhangsan",22) }//kotlin語言默認是public,kotlin更規范&#xff0c;先有輸入&#xff08; getMethod(name:String,age:Int)&#xff09;再有輸出(Int[返回值]) private fun getMethod(name:String,age:Int): Int{println("我叫…

Elasticsearch集群shard過多后導致的性能問題分析

1.問題現象 上午上班以后發現ES日志集群狀態不正確&#xff0c;集群頻繁地重新發起選主操作。對外不能正常提供數據查詢服務&#xff0c;相關日志數據入庫也產生較大延時 2.問題原因 相關日志 查看ES集群日志如下&#xff1a; 00:00:51開始集群各個節點與當時的master節點…

Playwright快速上手-1

前言 隨著近年來對UI自動化測試的要求越來越高&#xff0c;,功能強大的測試框架也不斷的涌現。本系列主講的Playwright作為一款新興的端到端測試框架,憑借其獨特優勢,正在逐漸成為測試工程師的熱門選擇。 本系列文章將著重通過示例講解 Playwright python開發環境的搭建 …

Linux Day07

一、僵死進程 1.1僵死進程產生的原因 子進程先于父進程結束, 而父進程沒有獲取子進程退出碼&#xff0c;釋放子進程占用的資源&#xff0c;此時子進程將成為一個僵死進程。 在第一個框這里時父進程子進程都沒有結束&#xff0c;顯示其pid 父進程是2349&#xff0c;子進程是235…

【Nginx】Nginx網站服務

國外主流還是使用apache&#xff1b;國內現在主流是nginx&#xff08;并發能力強&#xff0c;相對穩定&#xff09; nginx&#xff1a;高性能、輕量級的web服務軟件 特點&#xff1a; 1.穩定性高&#xff08;沒apache穩&#xff09;&#xff1b; 2.系統資源消耗比較低&#xf…

Failed to set locale, defaulting to C.UTF-8 或者中文系統語言轉英文系統語言

CentOS 8中執行命令&#xff0c;出現報錯&#xff1a;Failed to set locale, defaulting to C.UTF-8報錯原因&#xff1a; 1、沒有安裝相應的語言包。2、沒有設置正確的語言環境。 解決方法1&#xff1a;安裝語言包 設置語言環境需使用命令 localelocale -a 命令&#xff0c;查…

代碼隨想錄day02

977.有序數組的平方 ● 力扣題目鏈接 ● 給你一個按 非遞減順序 排序的整數數組 nums&#xff0c;返回 每個數字的平方 組成的新數組&#xff0c;要求也按 非遞減順序 排序。 思路 ● 暴力排序&#xff0c;時間復雜度O(n nlogn) ● 使用雙指針&#xff0c;時間復雜度O(n) …

Vue中使用v-bind:class動態綁定多個類名

Vue.js是一個流行的前端框架&#xff0c;它可以幫助開發者構建動態交互的UI界面。在Vue.js開發中&#xff0c;經常需要動態綁定HTML元素的class&#xff08;類名&#xff09;屬性&#xff0c;以改變元素的外觀和行為。本文將介紹采用v-bind:class指令在Vue中如何動態綁定多個類…

【大數據】-- 本地部署 Flink kubernetes operator

目錄 1.說明 1.1 版本 1.2 kubernetes 環境 1.3 參考 2.安裝步驟 2.1 安裝本地 kubernetes 環境

判斷鏈表有環的證明

目錄 1.問題 2.證明 3.代碼實現 1.問題 給你一個鏈表的頭節點 head &#xff0c;判斷鏈表中是否有環。 如果鏈表中有某個節點&#xff0c;可以通過連續跟蹤 next 指針再次到達&#xff0c;則鏈表中存在環。 為了表示給定鏈表中的環&#xff0c;評測系統內部使用…

TansUNet代碼理解

首先通過論文中所給的圖片了解網絡的整體架構&#xff1a; vit_seg_modeling部分 模塊引入和定義相關量&#xff1a; # codingutf-8 # __future__ 在老版本的Python代碼中兼顧新特性的一種方法 from __future__ import absolute_import from __future__ import division fr…

新基建助推數字經濟,CosmosAI率先布局AI超算租賃新紀元

倫敦, 8月14日 - 在英國倫敦隆重的Raffles OWO舉辦的歐盟數字超算新時代戰略合作簽約儀式&#xff0c;CosmosAI、Infinite Money Fund與Internet Research Lab三方強強聯手&#xff0c;達成了歷史性的合作協議&#xff0c;共同邁向超算租賃新紀元。 ? 這次跨界的合作昭示了全球…

Session基礎

文章目錄 什么是Sessionsession與cookie的區別和聯系Session的存Session的取 什么是Session 服務器為每個用戶瀏覽器創建一個會話對象&#xff08;session對象&#xff09;&#xff0c;一個瀏覽器只能產生一個session當新建一個窗口訪問服務器時&#xff0c;還是原來的那個ses…

VR家裝提升用戶信任度,線上體驗家裝空間感

近些年&#xff0c;VR家裝逐漸被各大裝修公司引入&#xff0c;VR全景裝修的盛行&#xff0c;大大增加了客戶“所見即所得”的沉浸式體驗感&#xff0c;不再是傳統二維平面的看房模式&#xff0c;而是讓客戶通過視覺、聽覺、交互等功能更加真實的體驗家裝后的效果。 對于傳統家裝…

本地Linux 部署 Dashy 并遠程訪問教程

文章目錄 簡介1. 安裝Dashy2. 安裝cpolar3.配置公網訪問地址4. 固定域名訪問 轉載自cpolar極點云文章&#xff1a;本地Linux 部署 Dashy 并遠程訪問 簡介 Dashy 是一個開源的自托管的導航頁配置服務&#xff0c;具有易于使用的可視化編輯器、狀態檢查、小工具和主題等功能。你…

JS如何向數組中添加數組

常見的辦法有 1、push()方法 var arr [a, b, c,d]; arr.push(e); console.log(arr); // [a, b, c, d,e] 2、concat()方法 var arr1 [a, b, c]; var arr2 [d, e, f]; var arr3 arr1.concat(arr2); console.log(arr3); // [a, b, c, d, e, f] 3、可以使用ES6中的spread操作符…

【git】Fork或者git clone克隆了別人項目,如何保持與原項目同步更新

Fork或者git clone克隆了別人項目&#xff0c;如何保持與原項目同步更新 #mermaid-svg-LC920CR873UxZJC3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LC920CR873UxZJC3 .error-icon{fill:#552222;}#mermaid-svg-…

BUUCTF 還原大師 1

題目描述&#xff1a; 我們得到了一串神秘字符串&#xff1a;TASC?O3RJMV?WDJKX?ZM,問號部分是未知大寫字母&#xff0c;為了確定這個神秘字符串&#xff0c;我們通過了其他途徑獲得了這個字串的32位MD5碼。但是我們獲得它的32位MD5碼也是殘缺不全&#xff0c;E903???4D…