`

java调用microsoft translate api webservice

    博客分类:
  • java
阅读更多
想做个东西简体转繁体,找到微软的API可用:
http://msdn.microsoft.com/en-us/library/ff512423.aspx

感觉这个要比GOOGLE的好,因为微软的接口会将一些词汇差异也体现出来,比如"服务器"转换为"伺服器","软件"转换为"软体".

package test;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class Test {
	public static void main(String[] args) throws Exception{
		
		//message to be translated
		String str = "服务器硬盘软件数据库程序设计";
		
		
		String method = "Translate";
		Service service = new Service();
		Call call = (Call) service.createCall();
		call.setTargetEndpointAddress(new java.net.URL("http://api.microsofttranslator.com/V2/Soap.svc"));
		call.setOperationName(new QName("http://api.microsofttranslator.com/V2",method));
		
		call.addParameter(new QName("http://api.microsofttranslator.com/V2","appId"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
		call.addParameter(new QName("http://api.microsofttranslator.com/V2","text"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
		call.addParameter(new QName("http://api.microsofttranslator.com/V2","from"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
		call.addParameter(new QName("http://api.microsofttranslator.com/V2","to"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
		 
		 
		call.setUseSOAPAction(true);
		call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
		call.setSOAPActionURI("http://api.microsofttranslator.com/V2/LanguageService/Translate");
		
		String result = (String)call.invoke(new Object[]{"YOUR APPID HERE",str,"zh-CHS","zh-CHT"});
		
		//result
		System.out.println(result);
	}
}

分享到:
评论
7 楼 nakupanda 2012-08-22  
lovelease 写道
nakupanda 写道
你应该去阅读一下现在的API DOC, 这篇文章已经是2年前的了...

嗯,现在的api已经不支持通过appid调用api了,改成了access token,需要后台通过http post请求到bing去获取一个access token,然后通过这个东西再去请求api,上面代码是C#的,可惜我不懂,我现在问题就是用java实现下面这段代码,之前没坐过java的http访问,如果你懂C#的话麻烦看下这段代码,不懂就算了
private AdmAccessToken HttpPost(string DatamarketAccessUri, string requestDetails)
        {
            //Prepare OAuth request 
            WebRequest webRequest = WebRequest.Create(DatamarketAccessUri);
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.Method = "POST";
            byte[] bytes = Encoding.ASCII.GetBytes(requestDetails);
            webRequest.ContentLength = bytes.Length;
            using (Stream outputStream = webRequest.GetRequestStream())
            {
                outputStream.Write(bytes, 0, bytes.Length);
            }
            using (WebResponse webResponse = webRequest.GetResponse())
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AdmAccessToken));
                //Get deserialized object from JSON stream
                AdmAccessToken token = (AdmAccessToken)serializer.ReadObject(webResponse.GetResponseStream());
                return token;
            }
        }


的确不懂 
6 楼 lovelease 2012-08-21  
nakupanda 写道
你应该去阅读一下现在的API DOC, 这篇文章已经是2年前的了...

嗯,现在的api已经不支持通过appid调用api了,改成了access token,需要后台通过http post请求到bing去获取一个access token,然后通过这个东西再去请求api,上面代码是C#的,可惜我不懂,我现在问题就是用java实现下面这段代码,之前没坐过java的http访问,如果你懂C#的话麻烦看下这段代码,不懂就算了
private AdmAccessToken HttpPost(string DatamarketAccessUri, string requestDetails)
        {
            //Prepare OAuth request 
            WebRequest webRequest = WebRequest.Create(DatamarketAccessUri);
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.Method = "POST";
            byte[] bytes = Encoding.ASCII.GetBytes(requestDetails);
            webRequest.ContentLength = bytes.Length;
            using (Stream outputStream = webRequest.GetRequestStream())
            {
                outputStream.Write(bytes, 0, bytes.Length);
            }
            using (WebResponse webResponse = webRequest.GetResponse())
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AdmAccessToken));
                //Get deserialized object from JSON stream
                AdmAccessToken token = (AdmAccessToken)serializer.ReadObject(webResponse.GetResponseStream());
                return token;
            }
        }
5 楼 nakupanda 2012-08-20  
你应该去阅读一下现在的API DOC, 这篇文章已经是2年前的了...
4 楼 lovelease 2012-08-20  
我在下面这句代码YOUR APPID HERE中设定了自己的appid,但是还是抛错,请问为什么:
String result = (String)call.invoke(new Object[]{"YOUR APPID HERE",str,"zh-CHS","zh-CHT"});

报的错是:

AxisFault
faultCode: {http://schemas.microsoft.com/ws/2005/05/addressing/none}ActionNotSupported
faultSubcode:
faultString: The message with Action 'http://api.microsofttranslator.com/V2/Soap.svc/Translate' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver.  Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
3 楼 lovelease 2012-08-17  
要调用ms translate api,不是需要appid吗,但是从你的程序来看,这一句代码能将自己的appid写入吗
call.addParameter(new QName("http://api.microsofttranslator.com/V2","appId"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);

我现在遇到的问题是,明显是appid不正确嘛:
ArgumentException: Invalid appId
Parameter name: appId : ID=2241.V2_Soap.Translate.28E76E27
2 楼 nakupanda 2012-08-14  
好久没弄, 我也不清楚了
1 楼 cmm 2012-08-13  

如果要实现“TranslateArray Method”这个方法的是要怎么弄呢?

相关推荐

    java调用json参数的webservice

    为了使得Java客户端能够调用WebService服务,需要使用一些工具,例如JAX-WS(Java API for XML Web Services),它是Java SE的一部分,用于创建WebService客户端和服务端。 综上所述,通过Java调用带有JSON参数的...

    java调用第三方webservice服务工具类

    使用Java调用webservice服务,工具类中获取天气服务,可根据官方api进行修改

    Java调用ASP.NET的WebService接口实例

    Java调用.NET的WebService接口实例,jar包删减到三个,干净清爽,里面包含注多注释和图解,搞了半天的家伙拿出来与大家分享,无任何BUG,修改里面的参数即可直接运行,对于这种好东西,花了半天时间10分不算高,重在...

    JAVA 调用SAP SOAP webservice.docx

    在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP 登录信息 在使用 JAVA 调用 SAP SOAP...

    java调用webservice.zip

    java调用webservicejava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava...

    java使用XFire调用webService接口

    "Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...

    C#调用JavaWebService

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...

    java 调用 odi webservice

    ODI(Oracle Data Integrator)是一种数据集成平台,提供了webservice接口,允许用户通过webservice调用ODI方案执行,从而实现数据的同步。 在本文档中,我们将通过 Java 应用程序调用 ODI webservice,实现数据的...

    java调用C++ webservice

    本话题主要探讨如何使用Java调用由C++实现的Web服务(Webservice)。在给出的描述中,提到了通过WSDL(Web Services Description Language)文件来实现这一目标。以下是关于这个主题的详细知识点: 1. **Web服务...

    Java调用C#的WebService例子

    Java调用C#的WebService是跨平台间通信的一种常见方式,尤其在企业级应用中,可能需要集成不同语言开发的服务。本示例介绍如何在Java环境中利用Xfire库来调用C#编写的WebService服务。 首先,理解WebService的核心...

    java调用.net发布的webservice(asmx)

    本文将详细讲解如何使用Java调用.NET发布的Web Service(ASMX),并解决在此过程中可能出现的SOAPAction报错和“Server not identified”错误。 首先,我们需要了解ASMX。ASMX是.NET Framework早期版本中用于创建...

    Java调用php的webservice

    Java客户端使用Apache Axis库来调用PHP Webservice服务。 ##### 1. 创建Service实例 ```java Service service = new Service(); ``` 创建一个新的`Service`对象。 ##### 2. 创建Call实例 ```java Call call = ...

    java 调用https webservice实例及axis包

    6. **文档和资源**:"doc"目录可能包含Axis的API文档,帮助理解如何使用相关类和方法。"res"目录可能包含证书文件或者其他的资源,例如自签名证书,用于测试环境。 在实际开发中,你还需要了解和处理如证书链、信任...

    java android 调用webservice

    本篇将详细讲解如何在Android应用中使用Java调用Webservice。 一、理解Web服务 Web服务是一种基于互联网的、标准化的服务交互方式,它允许不同系统之间的应用程序共享数据和功能。常见的Web服务有SOAP(Simple ...

    Java访问c#开发的webservice

    通过上述步骤,我们成功地创建了一个 C# 的 Web Service,并且使用 Java 实现了对其的远程调用。这种跨语言的交互方式极大地增强了系统的灵活性和可扩展性,是分布式应用开发中不可或缺的一部分。在未来的工作中,...

    C#调用java发布的WebService终稿.pdf

    C# 调用 Java 发布的 WebService 终稿是指使用 C# 语言调用 Java 语言发布的 WebService。这意味着,我们将使用 C# 语言编写的客户端程序来调用 Java 语言发布的 WebService。 描述解释 本文档的描述是指 C# 调用 ...

    c#调用java带身份验证webservice

    本主题将深入探讨如何使用C#来调用带有身份验证的Java Web服务。Web服务作为一种基于标准的通信方式,允许不同语言和平台之间的应用程序共享数据和功能。在这个案例中,我们将重点关注C#与Java之间的交互,特别是...

    Java使用SOAP获取webservice实例解析

    ### Java使用SOAP获取WebService实例解析 #### WebService简介 WebService是一种跨编程语言和操作系统平台的、在网络上进行数据交换的一种方式。它使用标准的Internet协议,如HTTP、XML、SOAP等来实现不同系统间的...

    sap abap调用java生成的webservice手册

    【SAP ABAP调用Java生成的Web Service手册】 在SAP系统中,与外部服务进行交互时,经常需要调用由Java等其他语言编写的Web Service。本手册详细介绍了如何在MyEclipse环境中生成Web Service,并在SAP ABAP环境中...

    java+soap+webservice 调用模拟

    3. **Java中的SOAP调用**:在Java中,我们通常使用JAX-WS(Java API for XML Web Services)框架来处理SOAP通信。JAX-WS提供了多种工具,如wsimport,可以从WSDL文件生成客户端代理类。这些代理类提供了调用Web服务...

Global site tag (gtag.js) - Google Analytics