百度翻译新版API的VB实现代码
来源:互联网 发布:pe windows 编辑:程序博客网 时间:2024/05/16 19:56
Public Const BAIDU_APP_ID = "XXXXXXXXXXXXXXXXXXXXX" '在百度申请后得到Public Const BAIDU_APP_KEY = "XXXXXXXXXXXXXXXXXXXXXX" '在百度申请后得到 Public Type MD5_CTX dwNUMa As Long dwNUMb As Long Buffer(15) As Byte cIN(63) As Byte cDig(15) As ByteEnd Type Public Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As LongPublic Declare Sub MD5Final Lib "advapi32" (lpContext As MD5_CTX)Public Declare Sub MD5Init Lib "advapi32" (lpContext As MD5_CTX)Public Declare Sub MD5Update Lib "advapi32" (lpContext As MD5_CTX, ByRef lpBuffer As Any, ByVal BufSize As Long) Public Function Translate(ByVal Text As String, Optional ByVal Source As String = "auto", Optional ByVal Target As String = "auto", Optional ByVal AppID As String = BAIDU_APP_ID, Optional ByVal Key As String = BAIDU_APP_KEY) As String Dim XML As Object, stcContext As MD5_CTX, URL As String, PostData As String, Salt As String Dim Arr() As Byte, I As Long, Result As String URL = "http://api.fanyi.baidu.com/api/trans/vip/translate" Randomize Salt = Replace(Rnd, ".", "") MD5Init stcContext PostData = "q=" & Text PostData = PostData & "&appid=" & AppID PostData = PostData & "&salt=" & Salt PostData = PostData & "&from=" & Source PostData = PostData & "&to=" & Target PostData = PostData & "&sign=" I = Len(AppID & Text & Salt & Key) ReDim Arr(I * 3) I = WideCharToMultiByte(65001, 0, StrPtr(AppID & Text & Salt & Key), I, Arr(0), I * 3 + 1, vbNullString, 0) If I < 1 Then Exit Function MD5Update stcContext, Arr(0), I MD5Final stcContext For I = 0 To UBound(stcContext.cDig) PostData = PostData & LCase(IIf(stcContext.cDig(I) < 16, "0" & Hex(stcContext.cDig(I)), Hex(stcContext.cDig(I)))) Next Set XML = CreateObject("WinHttp.WinHttpRequest.5.1") XML.Option(6) = False XML.Option(4) = 13056 XML.Open "POST", URL XML.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" XML.SetRequestHeader "Content-Length", LenB(StrConv(PostData, vbFromUnicode)) XML.Send PostData PostData = XML.ResponseText Set XML = Nothing I = InStr(PostData, "error_code") If I > 0 Then Result = "错误代码:" & Mid(PostData, I + 13, InStr(I + 13, PostData, """") - I - 13) I = InStr(PostData, "error_msg") Result = Result & ",说明:" & Mid(PostData, I + 12, InStr(I + 12, PostData, """") - I - 12) Else I = 1 PostData = Replace(PostData, "\""", "\'") Do Until InStr(I, PostData, """dst"":""") = 0 I = InStr(I, PostData, """dst"":""") + 7 Result = IIf(Len(Result) = 0, "", Result & vbCrLf) & Mid(PostData, I, InStr(I, PostData, """") - I) Loop Result = Replace(Result, "\'", """") ReDim Arr(1) Do Until InStr(Result, "\u") = 0 I = InStr(Result, "\u") Result = Replace(Result, Mid(Result, I, 6), ChrW("&H" & Mid(Result, I + 2, 4))) Loop End If Translate = ResultEnd Function
调用方法
Debug.Print Translate("你好")
补一下,在Windows XP系统下用
CreateObject("WinHttp.WinHttpRequest.5.1")创建出来的对象,POST提交时langth项会变成0,需要改下代码变成工程引用后再定义。
0 0
- 百度翻译新版API的VB实现代码
- 新版百度翻译api的使用,java,android
- 用 Java 和 百度翻译API 实现代码注释翻译
- 利用百度翻译API实现多语言的翻译
- 百度翻译API - PHP实现
- hadoop新版的api接口实现启动运行hadoop代码
- python3百度翻译API实现批量翻译
- 翻译软件(用百度的API实现)Python
- 百度翻译API的调用
- C#调用百度翻译API实现自己的简单翻译工具
- [Python]通过调用百度翻译API实现的翻译小程序
- 使用百度翻译API实现一键翻译
- 用java多线程实现“百度翻译接口API快速翻译”
- Python3-结合百度翻译开放API实现批量翻译
- 百度翻译API的简单调用
- 百度地图API新版申请API Key
- 调用百度翻译API
- 百度翻译api开发
- Eclipse 常用快捷键
- Java并发包中的同步队列SynchronousQueue实现原理
- sicily 1155. Can I Post the lette
- Menu comments
- Spring在非web应用中关闭IoC容器 (registerShutdownHook)
- 百度翻译新版API的VB实现代码
- Maven学习总结(4)——Maven核心概念
- C# winForm webBrowser页面中js调用winForm类方法
- 使用InjectView和findViewById说拜拜
- c#在Repeater中的button如何触发onclick事件
- iOS开发多线程篇—线程安全
- iOS开发的22个奇葩技巧
- Android Studio插件开发实战(2)-代码生成类插件开发
- Apache Stratos初步探索