当前位置:首页 » 编程语言 » c调用java的webservice

c调用java的webservice

发布时间: 2022-09-09 03:46:38

A. C#如何访问java接口

C#调用Java实现的WebService接口的步骤:
方法一:在项目中添加webservice引用,通过向导即能完成
方法二:为方便使用期间使用如下的两个命令来将java的webservice描述地址最终编译成一个动态库使用
1、生成类文件
wsdl.exe /l:cs /n:NWS /out:C:/NWS.cs http://***.***.**.**/WebSite1/Service?wsdl
2、将类文件编译成动态库
csc /target:library /out:"c:\NWS.dll" c:\NWS.cs
后面的使用就是一样的了
不过这里注意两个问题:
(1)描述地址最后的参数?wsdl有时候不可或缺,最好加上,因为你最终要编译的就是这个wsdl文件。但如果是本地的wsdl文件的话,忽略此问题。
(2)wsdl.exe是微软VS中提供的一个工具,在VS命令好中可以直接调用出来 这里要记住/n:TestWS也即/namespace:TestWS中你自行定义的一个命名空间TestWS ,这个在你后续调用java的webservice提供的方法的时候会使用到。

B. C#调用CXF框架的JAVA的Webservice,怎么验证用户名密码

以下是我从上述链接文章里复制过来的,有疑问的地方我加了问题注释:

1.C#调用java 编写的webservice时不会自动生成 soapheader 类接口的,需要改动Reference.cs。
2.改动方法
a、 继承System.Web.Services.Protocols.SoapHeader ,生成一个新类(MyHeader,这里名字无所谓),类中扩展调要webservice 试soapheader中要求的成员,名称一定要与对方要求的一样

public class MyHeader : System.Web.Services.Protocols.SoapHeader
{
public string user; //= "12650000238BF747AD";
public string pwd ;//= "";
public MyHeader()
{
user = "";
pwd = "";
}

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

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

packagecom.yun.test;
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.Name;
importjavax.xml.soap.SOAPException;
publicclasstestWebService{
publicstaticStringgetResult()throwsServiceException,MalformedURLException,RemoteException,SOAPException
{
//标识WebService的具体路径
Stringendpoint="WebService服务地址";
//创建Service实例
Serviceservice=newService();
//通过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");
call.addHeader(header);

//=newSOAPHeaderElement("发布的wsdl里的targetNamespace里的url","SoapHeader");
//soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
//try
//{
//soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
//}
//catch(SOAPExceptione)
//{
//e.printStackTrace();
//}
//call.addHeader(soapHeaderElement);
//调用WebService的方法
org.apache.axis.description.OperationDescoper;
org.apache.axis.description.ParameterDescparam;
oper=neworg.apache.axis.description.OperationDesc();
oper.setName("opName");
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.setOmittable(true);
oper.addParameter(param);
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.setOmittable(true);
oper.addParameter(param);
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);
param.setOmittable(true);
oper.addParameter(param);
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"),
"Exception",
newjavax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","Exception"),
true
));
call.setOperation(oper);
call.setOperationName(newjavax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url","opName"));
//调用WebService,传入参数
Stringres=(String)call.invoke(newObject[]("arg0","arg1"));
System.out.println("===============");
returnres;
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
try{
System.out.println(getResult());
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(RemoteExceptione){
e.printStackTrace();
}catch(ServiceExceptione){
e.printStackTrace();
}catch(SOAPExceptione){
e.printStackTrace();
}
}
}

2、利用Eclipse自动生成WebService client代码就容易多了:
首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish
这样,WebService Client代码已经生成好了。
接下来写一个Test类,在main函数中输入如下代码:

Stringendpoint="服务器的WebService的地址";
YourWebServiceNameProxyumsp=newYourWebServiceNameProxy(endpoint);
try{
StringresultStr=umsp.opMethod("arg0","arg1");
System.out.println(resultStr);
}catch(Exceptione){
System.out.println("异常");
e.printStackTrace();
}catch(RemoteExceptione){
System.out.println("RemoteException异常");
e.printStackTrace();
}

D. C# 调用java webservice 接口

C#调用WEBSERVICE
只要在项目中添加WEBSERVICE引用就行了.
输入网址.很简单的

document对象
序列化 和 反序列化
JAVA C# 那个参数都用文本传递接受

E. C#怎么调用axis2的java做的webservice

方式一:生成客户端代码调用方式。
通过插件工具生成客户端代码进行调用。例如:存在一服务为 127.0.0.1:8000/axis2/services/SMSSendService?wsdl通过插件可以生成SMSSendServiceStub.Java和SMSSendServiceCallbackHandler.java类。调用的客户端代码如:
try {
SMSSendServiceStub stub=new SMSSendServiceStub();
SMSSendServiceStub.method1 m1=new SMSSendServiceStub.method1();
m1.setParam1("xxx");
try {
String ret=stub.multiSend(m1).get_return();
System.out.print(ret);
} catch (RemoteException e) {
e.printStackTrace();
}
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

方式二:使用axis2.rpc.client.RPCServiceClient方式调用。
调用的代码简单举例如下:
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
......
try {
final String endpoint = " 127.0.0.1:8000/axis2/services/SMSSendService";
String opName = "method1";
String param="xxx";
Object[] opArgs = new Object[] { param };
Class<?>[] opReturnType = new Class[] { String[].class };
RPCServiceClient serviceClient = new RPCServiceClient();//此处RPCServiceClient 对象实例建议定义成类中的static变量,否则多次调用会出现连接超时的错误。
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(endpoint);
options.setTo(targetEPR);
QName opQName = new QName("service.ws.sms.ipcc.ydtf.com",
opName);
Object[] ret = serviceClient.invokeBlocking(opQName, opArgs,
opReturnType);
System.out.println(((String[]) ret[0])[0]);
} catch (AxisFault e) {
e.printStackTrace();
}

F. C#调用java webservice服务

用VS自带的工具wsdl不行吗?
http://blog.csdn.net/wanderocn/article/details/6672370

G. vc 创建的MFC dll 怎么调用java 写的webservice

dll是你自己写的吗?有.h 文件吗?java掉DLL的库函数 需要写中间过渡的Dll的。因为C++和java数据类型定义不同,需要中间dll做数据转换的。 有DLL的.h文件的话,自己按JNI的教程写一个转换DLL就行。

H. C#调用java写的webservice时出现错误

这个很正常的,在传输的过程中,数据结构保存的可能没那么完整,java我不是很熟悉,但是应该有方式声明返回结果的数据结构的。之前出现过我写的C#的WCF让JAVA调用,List编程数组的情况。
话说回来,就算是数组,用起来和list差不多的,都是继承同一个基类的

I. c# 可以用httpclient调用java开发的webservice吗

Webservice是标准的。你可以在.NET这边,使用原生的http请求(HttpWebRequest),将服务者提供的soap消息格式做参数替换,然后当作http协议的实体内容发送到webservice所寄存的服务器上,然后WS会根据soap消息中参数,做出响应。你在客户端接收响应消息,不就好了?
当然,你也可以在.NET端去动态调用,根据WSDL文件描述,自己在.NET这边生成服务代理类,手动调用编译器去生成,然后用反射的方式去调用WS提供的webmethod。

热点内容
存储卡交流 发布:2025-01-13 07:16:06 浏览:982
php字符串浮点数 发布:2025-01-13 07:15:28 浏览:997
python排序cmp 发布:2025-01-13 07:09:04 浏览:71
云脚本精灵 发布:2025-01-13 07:03:27 浏览:617
高维访问 发布:2025-01-13 07:03:23 浏览:974
保卫萝卜有脚本吗 发布:2025-01-13 06:30:29 浏览:741
天猫上传 发布:2025-01-13 06:06:35 浏览:156
php处理并发 发布:2025-01-13 06:03:44 浏览:283
安卓传文件的软件哪个最好 发布:2025-01-13 06:03:07 浏览:886
电脑服务器可以做吗 发布:2025-01-13 05:59:49 浏览:847