新手 webservice开发,用Java调用.NET已封装的webservice接口,求指点

山狮 2012-07-12 09:59:43
webservice 访问端口:http://172.16.10.200/omp/Service/AjaxCallWS.asmx
有接口:ControlDevice说明,说明地址为:http://172.16.10.200/omp/Service/AjaxCallWS.asmx?op=ControlDevice
说明文字为:



ControlDevice

测试

测试窗体只能用于来自本地计算机的请求。
SOAP 1.1

以下是 SOAP 1.1 请求和响应示例。所显示的占位符需替换为实际值。

POST /omp/Service/AjaxCallWS.asmx HTTP/1.1
Host: 172.16.10.200
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/ControlDevice"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ControlDevice xmlns="http://tempuri.org/">
<DId>string</DId>
<SValue>string</SValue>
</ControlDevice>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ControlDeviceResponse xmlns="http://tempuri.org/">
<ControlDeviceResult>string</ControlDeviceResult>
</ControlDeviceResponse>
</soap:Body>
</soap:Envelope>
SOAP 1.2

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /omp/Service/AjaxCallWS.asmx HTTP/1.1
Host: 172.16.10.200
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<ControlDevice xmlns="http://tempuri.org/">
<DId>string</DId>
<SValue>string</SValue>
</ControlDevice>
</soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<ControlDeviceResponse xmlns="http://tempuri.org/">
<ControlDeviceResult>string</ControlDeviceResult>
</ControlDeviceResponse>
</soap12:Body>
</soap12:Envelope>


我用myeclipse直接建立一个web project
在工程里面新建一个类,直接调用webservice,具体如下:



package com.candysee.test;

import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.encoding.XMLType;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis2.Constants;

public class TestWbservice {
public static void main(String[] args) {
// 远端调用的函数名
String method = "ControlDevice";
// webservice端口
String servicePoint = "http://172.16.10.200/omp/Service/AjaxCallWS.asmx";
// 默认命名空间
String xmlns = "http://tempuri.org/";
// SOAPAction
String SOAPAction = "http://tempuri.org/ControlDevice";

Service service = new Service();
Call call = (Call) service.createCall();;
try {
// 访问的webservice地址
call.setTargetEndpointAddress(new URL(servicePoint));
// 被调用的webservice方法
call.setOperationName(new QName(xmlns, method));

// 设置参数
call.addParameter("DId", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("SValue", XMLType.XSD_STRING, ParameterMode.IN);

call.setUseSOAPAction(true);
// 返回值类型
call.setReturnType(Constants.XSD_STRING);
call.setSOAPActionURI(SOAPAction);

// 调用webservice方法
String resultlog = (String)call.invoke(new Object[] { "N0Y2MkE3MDEwMDRCMTIwMA==", "true"});
// 打印输出函数值
System.out.println(resultlog1);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}



这样为什么不行:
报错异常:
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.


请大侠们帮忙解答一下
...全文
325 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jack0801 2012-07-13
  • 打赏
  • 举报
回复
我是一个webservice新手,最近在搞webservice,使用java调用webservice接口,可老是报错,你的调用代码能发给我一下吗,我邮箱是:bowen0801@126.com QQ:735003673 谢谢
山狮 2012-07-13
  • 打赏
  • 举报
回复
已经搞定了,在设置访问端口有点小问题,末尾还要加上?wsdl
然后就是参数设置的地方,有点小语法错误!哈哈
[Quote=引用 2 楼 的回复:]

报的两个错误和你的app运行与否无关系,而且这也不是错误只是warning
这两个warning只是告诉你log4j没有正确配置,没有找到任何appender, 不能正确输出log
appender是用来设置log4j以何种形式输出log,比如一个文件或是一个jdbc链接等等
[/Quote]
山狮 2012-07-13
  • 打赏
  • 举报
回复
可以[Quote=引用 5 楼 的回复:]

我是一个webservice新手,最近在搞webservice,使用java调用webservice接口,可老是报错,你的调用代码能发给我一下吗,我邮箱是:bowen0801@126.com QQ:735003673 谢谢
[/Quote]
9441 2012-07-12
  • 打赏
  • 举报
回复
eclipse里webservice向导,你新建一个webservice client,跟着向导做就是了
宁波朱超 2012-07-12
  • 打赏
  • 举报
回复
根据已有的WS URL 生成JAVA、调用的本地客户端,然后再用客户端去调用 WS。
yktd26 2012-07-12
  • 打赏
  • 举报
回复
报的两个错误和你的app运行与否无关系,而且这也不是错误只是warning
这两个warning只是告诉你log4j没有正确配置,没有找到任何appender, 不能正确输出log
appender是用来设置log4j以何种形式输出log,比如一个文件或是一个jdbc链接等等

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧