JAVA调用C语言发布的webservice接口 10
服务地址:http://*.*.*.*:8080/VrvWebServer/VrvWebServer.dll?Handler=GenVrvWebServerWSDL地址在...
服务地址:
http://*.*.*.*:8080/VrvWebServer/VrvWebServer.dll?Handler=GenVrvWebServerWSDL
地址在浏览器上显示的结果:
<?xml version="1.0" encoding="utf-16"?>
<wsdl:definitions xmlns:s0="urn:VrvWebServerService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:atls="http://tempuri.org/vc/atl/server/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:VrvWebServerService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="urn:VrvWebServerService">
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
</s:schema>
</wsdl:types>
<wsdl:message name="LoginIn">
<wsdl:part name="strUserName" type="s:string" />
<wsdl:part name="strPassWord" type="s:string" />
</wsdl:message>
<wsdl:message name="LoginOut">
<wsdl:part name="return" type="s:int" />
<wsdl:part name="strResult" type="s:string" />
</wsdl:message>.......................
现在需要调用Login接口!哪位大虾调用过啊?求孝 展开
http://*.*.*.*:8080/VrvWebServer/VrvWebServer.dll?Handler=GenVrvWebServerWSDL
地址在浏览器上显示的结果:
<?xml version="1.0" encoding="utf-16"?>
<wsdl:definitions xmlns:s0="urn:VrvWebServerService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:atls="http://tempuri.org/vc/atl/server/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:VrvWebServerService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="urn:VrvWebServerService">
<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
</s:schema>
</wsdl:types>
<wsdl:message name="LoginIn">
<wsdl:part name="strUserName" type="s:string" />
<wsdl:part name="strPassWord" type="s:string" />
</wsdl:message>
<wsdl:message name="LoginOut">
<wsdl:part name="return" type="s:int" />
<wsdl:part name="strResult" type="s:string" />
</wsdl:message>.......................
现在需要调用Login接口!哪位大虾调用过啊?求孝 展开
3个回答
展开全部
Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
package com.yudun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//标识Web Service的具体路径
String endpoint = "WebService服务地址";
// 创建 Service实例
Service service = new Service();
// 通过Service实例创建Call的实例
Call call = (Call) service.createCall();
//将Web Service的服务路径加入到call实例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("opName");
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("", "return"));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
"Exception",
new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),
true
));
call.setOperation( oper );
call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));
//调用Web Service,传入参数
String res = ( String ) call.invoke( new Object[]("arg0","arg1"));
System.out.println("===============");
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(getResult());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
}
2、利用Eclipse自动生成WebService client代码就容易多了:
首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish
这样,WebService Client代码已经生成好了。
接下来写一个Test类,在main函数中输入如下代码:
String endpoint = "服务器的WebService的地址";
YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);
try {
String resultStr = umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
} catch (Exception e) {
System.out.println("异常");
e.printStackTrace();
} catch (RemoteException e) {
System.out.println("RemoteException异常");
e.printStackTrace();
}
展开全部
这个跟语言没关系. webservice有这个优点。
你用的是eclipse IDE么?
IDE 可以自动生成接口 然后你可以直接调用.
在工程节点上点击右键 new 一个 web service client 然后把网址添加进去 基本可以自动生成了
你用的是eclipse IDE么?
IDE 可以自动生成接口 然后你可以直接调用.
在工程节点上点击右键 new 一个 web service client 然后把网址添加进去 基本可以自动生成了
追问
追答
是的
你自动生成的类文件不止这一个吧?
有一个 .....Client
有一个 .....Soap
...说的是你的方法名什么的
然后 new 一个...Client对象a,然后用a的方法生成一个...Soap对象b,对象b就可以调用login()方法了
当然,建议你进行封装。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-27
展开全部
您好 我们调用Webservice一般是先用一个接口测试类进行测试,方法如下
//public static String callSGCCService(String 方法名,String 参数,String 接口类名,String 地址)
public static String callSGCCService(String operationName,String inputXML,String serviceName,String serverContextRoot) {
try {
String endpoint = serverContextRoot+"/services/"+serviceName;//总地址
Service service = new Service();// 创建一个服务(service)调用(call)
Call call = (Call)service.createCall();// 通过service创建call对象
call.setTargetEndpointAddress(new URL(endpoint));// 设置service所在URL
call.setOperationName(new QName("空间地址",operationName));//空间地址可以为空 call.setUseSOAPAction(true);
String result1 = (String)call.invoke(new Object[]{inputXML});
return result1;
}
catch (Exception e)
{
System.err.println(e.toString());
}
return "";
}
//public static String callSGCCService(String 方法名,String 参数,String 接口类名,String 地址)
public static String callSGCCService(String operationName,String inputXML,String serviceName,String serverContextRoot) {
try {
String endpoint = serverContextRoot+"/services/"+serviceName;//总地址
Service service = new Service();// 创建一个服务(service)调用(call)
Call call = (Call)service.createCall();// 通过service创建call对象
call.setTargetEndpointAddress(new URL(endpoint));// 设置service所在URL
call.setOperationName(new QName("空间地址",operationName));//空间地址可以为空 call.setUseSOAPAction(true);
String result1 = (String)call.invoke(new Object[]{inputXML});
return result1;
}
catch (Exception e)
{
System.err.println(e.toString());
}
return "";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询