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

急,关于如何用java调用webservice接口的问题

我有结尾是 xxxxx.asmx的一个webservice地址,我如何在java程序里调用,向其中的一个方法传参数?
谢谢 --------------------编程问答-------------------- 还有以asmx为后缀的webservice地址吗,没听说过
我在百度里面输入asmx提示出来的是'阿诗玛香烟' --------------------编程问答-------------------- 给你个dom解析的示例吧

    String url="xxx.asmx/方法名?参数名=参数"
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder=factory.newDocumentBuilder(); 
    org.w3c.dom.Document doc = builder.parse(url);
    org.w3c.dom.NodeList list =doc.getElementsByTagName("Table");//具体什么标签要看对方的XML文件格式
    //--后面就循环解析
    
--------------------编程问答-------------------- 我也刚写了一个星期的webservices
访问xx.wsdl
http://xxxxx:8080/services/xxx?wsdl打开后页面另存为到盘符下并名为为xx.wsdl:如保存到D:\wsdl\xx.wsdl
得到客户端代码:
cmd
wsdl2java -uri D:\wsdl\xx.wsdl会得到一个src目录和一个build.xml文件
新建项目-->复制src替换新建项目的src,导入相应的包写测试类

                        AaStub sub = new AaStub();//这里是src下面的

AaStub.GetEPGinfo request = new AaStub.GetEPGinfo();//得到方法

request.setAppName("2");//给方法传入参数
request.setDate("2");//给方法传入参数
request.setSerialNo(100);//给方法传入参数

//给方法传入参数  这里得到是返回的是一个list用数组接收 如果你用的返回的
                        //是string就用string接收
Channel_item[] item=sub.getEPGinfo(request).get_return();

                        

--------------------编程问答--------------------

Client client = new Client(new URL("http://localhost:8080/Xfire/services/MathService?wsdl"));
str=client.invoke("say",new Object[]{null}); 


say表示调用的方法名 后面是object数组最为参数 --------------------编程问答-------------------- wsgen命令可以根据WSDL生成客户端代码 --------------------编程问答-------------------- 是这样,我要调用的方法是SET_XMSP(String DeptId, String PassWord, XmlDocument query),其中XmlDocument这个类型java中没有对应的,我用axis调用,其中有一段代码是

all.addParameter(new QName(nameSpace, "Query"),XMLType.XSD_STRING, ParameterMode.IN);而XMLType.XSD_STRING这个变量类型没法和XmlDocument query对应,有什么号办法吗? --------------------编程问答-------------------- 我以前写过一个webservice的例子,有webservice的发布和调用,一看就能懂的。很清晰。
CSDN上有下载的,不懂就留言!
下载地址:http://download.csdn.net/detail/a_yyc1990/3511130 --------------------编程问答-------------------- 你好,你那个例子我下载了,但是还是不行,
public static void test2() {
// 定义返回字符串
String returnvalue = "";
String nameSpace = "http://www.scsc.cn/";
String wsdlUrl = "http://124.128.55.20:82/FOR_INTERFACE_SERVICE_SET.asmx";//请求服务的URL
// 创建一个服务(service)调用(call)

 org.apache.axis.client.Service service = new  org.apache.axis.client.Service();

Call call = null;
try {
// 通过service创建call对象
call = (Call) service.createCall();
// 设置service所在URL
call.setTargetEndpointAddress(wsdlUrl);
// 调用C#中的服务
call.setOperationName(new QName(nameSpace, "SET_XMJB"));// 设置请求的命名空间及方法名
// 设置参数
call.addParameter(new QName(nameSpace, "DeptID"),
XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(nameSpace, "PassWord"),
XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(nameSpace, "Query"),
XMLType.XSD_STRING, ParameterMode.IN);

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);

call.setUseSOAPAction(true);
call.setSOAPActionURI("http://www.scsc.cn/SET_XMJB");// 设置SOAPAction
String a="11111";
           String b="22222";
                      String c="<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>"
    + "<SET_XMJB xmlns=\"http://cn.scsc.sdgcjs/xsd\">"
    + "<INPUT count=\"0\">"
    + "<ROW>"
    + "<GUID>1</GUID>"
    + "<XMBH>1</XMBH>"
    + "<XMMC>1</XMMC>"
    + "<SPDW>1</SPDW>"
    + "<XMGK>1</XMGK>"
    + "<JSSJ>1</JSSJ>"
    + "<JSDW>1</JSDW>"
    + "<JSDWDM>1</JSDWDM>"
    + "<XMFR>1</XMFR>"
    + "<CJDW>1</CJDW>"
    + "<FBDW>1</FBDW>" 
    + "<FBSJ>ddd</FBSJ>" 
    + "<FLAG>1</FLAG>" 
    + "</ROW>" 
    + "</INPUT>"
    + "</SET_XMJB>";
           
          Document document = DocumentHelper.parseText(c);
           returnvalue = (String) call.invoke(new Object[] {a,b,c});
 System.out.println(returnvalue);
现在的主要问题是 call.addParameter(new QName(nameSpace, "Query"),
XMLType.XSD_STRING, ParameterMode.IN);这句没法写,

接口方法是 SET_XMSP(String DeptId, String PassWord, XmlDocument query),XmlDocument 我没法用java中相关的类型对应,我尝试用dom4j 方法转换后类型也对应不上,现在不知道怎么解决了,是否能给个解决办法,谢谢了
--------------------编程问答-------------------- jdk bin 下有个命令可以对指定的 webservice 的url 生成 调用其的 客户端类方法。

网上这样的资源超级多啊
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,