您当前的位置:首页 > 互联网教程

JAVA调用C语言发布的webservice接口

发布时间:2025-05-12 12:47:49    发布人:远客网络

JAVA调用C语言发布的webservice接口

一、JAVA调用C语言发布的webservice接口

Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。

importjava.rmi.RemoteException;

importorg.apache.axis.client.Call;

importorg.apache.axis.client.Service;

importorg.apache.axis.message.PrefixedQName;

importorg.apache.axis.message.SOAPHeaderElement;

importcom.cezanne.golden.user.Exception;

importcom.cezanne.golden.user.UserManagerServiceProxy;

importjavax.xml.namespace.QName;

importjava.net.MalformedURLException;

importjavax.xml.rpc.ServiceException;

importjavax.xml.soap.SOAPException;

publicstaticStringgetResult()throwsServiceException,MalformedURLException,RemoteException,SOAPException

Stringendpoint="WebService服务地址";

//通过Service实例创建Call的实例

Callcall=(Call)service.createCall();

//将WebService的服务路径加入到call实例之中.

call.setTargetEndpointAddress(newjava.net.URL(endpoint));//为Call设置服务的位置

//由于需要认证,故需要设置调用的SOAP头信息。

NameheaderName=newPrefixedQName(newQName("发布的wsdl里的targetNamespace里的url","string_itemName"));

org.apache.axis.message.SOAPHeaderElementheader=newSOAPHeaderElement(headerName);

header.addTextNode("blablabla");

//SOAPHeaderElementsoapHeaderElement=newSOAPHeaderElement("发布的wsdl里的targetNamespace里的url","SoapHeader");

//soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");

//soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");

//call.addHeader(soapHeaderElement);

org.apache.axis.description.OperationDescoper;

org.apache.axis.description.ParameterDescparam;

oper=neworg.apache.axis.description.OperationDesc();

param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg0"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName(","string"),java.lang.String.class,false,false);

param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg1"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName(","string"),java.lang.String.class,false,false);

param=neworg.apache.axis.description.ParameterDesc(newjavax.xml.namespace.QName("","arg2"),org.apache.axis.description.ParameterDesc.IN,newjavax.xml.namespace.QName(","string"),java.lang.String.class,false,false);

oper.setReturnType(newjavax.xml.namespace.QName(","string"));

oper.setReturnClass(java.lang.String.class);

oper.setReturnQName(newjavax.xml.namespace.QName("","return"));

oper.setStyle(org.apache.axis.constants.Style.WRAPPED);

oper.setUse(org.apache.axis.constants.Use.LITERAL);

oper.addFault(neworg.apache.axis.description.FaultDesc(

newjavax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","Exception"),

newjavax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","Exception"),

call.setOperationName(newjavax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","opName"));

Stringres=(String)call.invoke(newObject[]("arg0","arg1"));

System.out.println("===============");

publicstaticvoidmain(String[]args){

System.out.println(getResult());

}catch(MalformedURLExceptione){

2、利用Eclipse自动生成WebService client代码就容易多了:

首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish

这样,WebService Client代码已经生成好了。

接下来写一个Test类,在main函数中输入如下代码:

Stringendpoint="服务器的WebService的地址";

YourWebServiceNameProxyumsp=newYourWebServiceNameProxy(endpoint);

StringresultStr=umsp.opMethod("arg0","arg1");

System.out.println(resultStr);

System.out.println("RemoteException异常");

二、调用webservice服务,入口参数比较复杂,不知道怎么调用

调用webservice服务,入口参数比较复杂,不知道怎么调用

整数,长整数,无符号数,浮点数,字符,字符串,符号常数,转义字符。

?自动转换:在不同类型数据的混合运算中,由系统自动实现转换,由少字节类型向多字节类型转换。不同类型的量相互赋值时也由系统自动进行转换,把赋值号右边的类型转换为左边的类型。

?强制转换:由强制转换运算符完成转换。

一般而言,单目运算符优先级较高,赋值运算符优先级低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。

表达式是由运算符连接常量、变量、函数所组成的式子。每个表达式都有一个值和类型。表达式求值按运算符的优先级和结合性所规定的顺序进行。