当前位置:编程学习 > JAVA >>

java webservice

最近有个PHP项目,要我做一个JAVA端的调用对方的接口,以前没坐过,完全昏的!在网上找了很多,但是都是模糊的感觉。我就请教一下大家了,这个调用的流程是怎样的。
  要用到asix方法,我主要是没搞懂调用接口是怎么实现的,这个过程不清楚,需要配置些什么,我这有段代码,贴出来,让大家帮我解析一下,这个方法的参数是什么意思,返回的是什么类型的结果,可以给我发邮箱841820399@qq。cm:
  public  static String getWebserviceInfo(String wsdladdr,String xmlStr,String wsAddr){//此方法需要在 客户端设置接受SESSEION
  javax.servlet.http.HttpSession session=null;
  BASE64Encoder encoder = new BASE64Encoder();
  BASE64Decoder decoder = new BASE64Decoder();
  Base64 cdrjBase64 = new Base64();
  StringReader sr = null;
  InputSource is = null;
  DOMParser dom = null;
  Document doc = null;
  String sResult=""; Table tblResult = null;
  try{
  Service service = new Service();
  service.setMaintainSession(true);//设置为保持会话

  Call call = (Call)service.createCall();
  call.setTargetEndpointAddress(wsdladdr);

  call.setOperationName("userLogin");//WSDL里面描述的接口名称

  call.addParameter("uName", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数
  call.addParameter("uPwd", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数
  call.addParameter("aKey", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数

  call.setReturnType(org.apache.axis.encoding.XMLType.XSD_BOOLEAN);//设置返回类型  
        
  String uName = "YS";//String  uPwd= "AdGakfSwNC";
  String uPwd=cdrjBase64.enCrypt("123");
  String aKey =Universal.MD5(Universal.getString(uPwd)+ Universal.dateToStr(new java.util.Date()));   

  Object result = call.invoke(new Object[]{uName,uPwd,aKey}); //给方法传递参数,并且调用方法
  if(result.toString().equalsIgnoreCase("true")){
  call.removeAllParameters();
  call.setOperationName("doRequest");//WSDL里面描述的接口名称
  call.addParameter("contfileNo", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数
  call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
  sResult = (String)call.invoke(new Object[]{xmlStr}); //给方法传递参数,并且调用方法
  }else{

  throw new Exception("webservice 登陆不成功!");
  }

  }catch (Exception ex){
  ex.printStackTrace();
  System.out.println("getWebserviceInfo的异常Exception is "+ex.getMessage());
  }
  return sResult;
  }

} --------------------编程问答-------------------- 我感觉调用对方的接口,应该是对方写webservice吧,你只需要调用他的url就可以了。开发接口的工作应该在对方,而不在你。 --------------------编程问答-------------------- 对方是服务端,你是客户端,你只要知道对方webservice的url要带什么参数,调用什么方法名就可以了。 --------------------编程问答-------------------- 你只是调用对方的webservice接口,一般调用对方只会提供一个服务地址即url或wsdl文件给你,你贴的代码是用axis调用的。我调接口,都是用axis的wsdl2java命令自动生成客户端调用的一些辅助类,在通过这些辅助类来调用接口。我自己写了简单的实例和操作方法,包括配置什么的,如果你需要发给你。 --------------------编程问答--------------------
引用 3 楼  的回复:
你只是调用对方的webservice接口,一般调用对方只会提供一个服务地址即url或wsdl文件给你,你贴的代码是用axis调用的。我调接口,都是用axis的wsdl2java命令自动生成客户端调用的一些辅助类,在通过这些辅助类来调用接口。我自己写了简单的实例和操作方法,包括配置什么的,如果你需要发给你。

    发给我吧,让我看看,多学习!很感谢。再问一下,就是对方假如只给我一个WSDL文件“http://218.75.129.178:9080/FundControl/wsdl/fundcontrolpackage/FundControlService.wsdl”,我是怎么调用呢,call.setTargetEndpointAddress("")里的地址我写什么呢,我看网上的都是写的是wsdl发布成了webservice的地址。但是这还只是一个WSDL文件,没法发布的 --------------------编程问答--------------------
引用 3 楼  的回复:
你只是调用对方的webservice接口,一般调用对方只会提供一个服务地址即url或wsdl文件给你,你贴的代码是用axis调用的。我调接口,都是用axis的wsdl2java命令自动生成客户端调用的一些辅助类,在通过这些辅助类来调用接口。我自己写了简单的实例和操作方法,包括配置什么的,如果你需要发给你。


    发给我吧,让我看看,多学习!很感谢。再问一下,就是对方假如只给我一个WSDL文件“http://218.75.129.178:9080/FundControl/wsdl/fundcontrolpackage/FundControlService.wsdl”,我是怎么调用呢,call.setTargetEndpointAddress("")里的地址我写什么呢,我看网上的都是写的是wsdl发布成了webservice的地址。但是这还只是一个WSDL文件,没法发布的 --------------------编程问答-------------------- 再追问一下,如果是我要传一个STRING类型的XML过去,该怎么做呢 --------------------编程问答-------------------- 用他给的地址生成webservice客户端
然后调用生成的代码里的方法,按照需要的参数传递进去就行了 --------------------编程问答-------------------- sResult = (String)call.invoke(new Object[]{xmlStr}); 这个参数是一个STRING型的xml,怎么做传啊 --------------------编程问答--------------------
引用 7 楼  的回复:
用他给的地址生成webservice客户端
然后调用生成的代码里的方法,按照需要的参数传递进去就行了


但是他只给我一个WSDL文件,我自己去生成webservice地址吗 --------------------编程问答--------------------
引用 9 楼  的回复:
引用 7 楼  的回复:
用他给的地址生成webservice客户端
然后调用生成的代码里的方法,按照需要的参数传递进去就行了


但是他只给我一个WSDL文件,我自己去生成webservice地址吗


http://218.75.129.178:9080/FundControl/wsdl/fundcontrolpackage/FundControlService?wsdl

这个不就是地址么。。。 --------------------编程问答-------------------- http://218.75.129.178:9080/FundControl/wsdl/fundcontrolpackage/FundControlService?wsdl
打开这个链接后有命名空间什么的,webservice接口有固定的模式调用的,你可以找你的顶头上司问问有没类似的模板, --------------------编程问答-------------------- --------------------编程问答-------------------- http://218.75.129.178:9080/FundControl/wsdl/fundcontrolpackage/FundControlService
后面跟?wsdl是显示服务的信息,可以获得方法的名称和参数
后面跟/方法名?参数=A&参数1=B这样是调用方法
实际使用的时候以上的方式仅供调试,axis2已经封装好了接收客户端的处理。
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,