WebService XML 提交数据

最近公司的项目要将公司采集到的数据提交到上级管理机构去,接收方提供了接口和数据上传规范。要通过XML方式提交,因为之前从未涉及过WebService方面的知识,网上好多资料都不是太明白,一些网友写的Demo要不说的太复杂,要不解释不清楚。后来根据网友的Demo根据接口提交数据规范自己写了个Demo成功后,总结下自己在哪些一些需要注意的地方。

1、Demo代码

import java.net.MalformedURLException;

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

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

public class TestService {

	public static void main(String[] args) {
		try {
			String wsdlUrl = "http://****:8086/mds/services/DataService";	//接口地址 (提交数据的接口地址,注意去掉?wsdl)
			 String nameSpaceUri = "http://ws.****.com.cn/";	//命名空间地址(上传接口方法所在命名空间)
			Service service = new Service();
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
			call.setOperationName(new QName(nameSpaceUri,"uploadAllData"));
			
			call.addParameter(new QName(nameSpaceUri,"value"),org.apache.axis.Constants.XSD_STRING,ParameterMode.IN);
			call.setReturnType(org.apache.axis.Constants.XSD_STRING);
			 
			call.setUseSOAPAction(true);
			call.setSOAPActionURI(nameSpaceUri+"uploadAllData");
			//call.setUsername("sapuser");
			//call.setPassword("sappass");
			call.setReturnType(org.apache.axis.Constants.XSD_STRING);
			String postdata = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request><reqtype>05</reqtype>"
					+ "<secret></secret>"
					+ "<body><userid>15</userid><seeid>1101</seeid><time>20120522224350</time>"
					+ "<data><type>01</type><value>11</value></data>"
					+ "<data><type>02</type><value>22</value></data>"
					+ "</body></request>";;
			String ret = (String)call.invoke(new Object[] {postdata});
			 
			 
			System.out.println("Successful = " + ret);
		} catch (Exception  e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}

}
2、获取namespaceUri

将接收方给的接口路径在浏览器中打开,如下图


获取到namespace后作为代码中的nameSpaceUri。

3、注意事项

      (1)call.setTargetEndpointAddress(new java.net.URL(wsdlUrl))中wsdlUrl是对方给的接口中去掉?wsdl后的路径。

       (2)call.addParameter(new QName(nameSpaceUri,"value"),org.apache.axis.Constants.XSD_STRING,ParameterMode.IN); QName中第一个参数是wsdlUrl路径,

               第二个参数把我坑的有点惨,这个参数我也不太明白为什么写个“value”就OK了。

       (3)postdata的Xml文件双引号(“)要用斜杠加双引号(\")代替。

       (4)postdata的Xml字符串要根据数据上传规范来拼接,我提交的接口规范如下()

<?xml version="1.0" encoding="UTF-8"?>
<request>
	<reqtype>05</reqtype>
	<secret></secret>
	<body>
		<userid>15</userid>  --企业标识
<seeid>1001</seeid> --监控点序号
<time>20120522224350</time> --时刻
<data>
<type>01</type> --指标类型
<value>219</value> --指标值
</data>
<data>
<type>02</type> --指标类型
<value>217</value> --指标值
</data>
	</body>
</request>
响应格式:
<?xml version="1.0" encoding="UTF-8"?>
<response>
	<flag>1</flag>
</response>





  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值