Java使用SOAP获取webservice实例解析

java

1.webservice提供方:http://www.webxml.com.cn/zh_cn/index.aspx
2.下面我们以“获得腾讯QQ在线状态”为例。
参数截图如下图:

SOAP 1.1

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

[http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline] 点击前面的网址,查看对应参数信息。

    
3.Java程序

package junit;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import org.junit.Test;

public class JxSendSmsTest {

/**

* 获得腾讯QQ在线状态

*

* 输入参数:QQ号码 String,默认QQ号码:8698053。返回数据:String,Y = 在线;N = 离线;E = QQ号码错误;A = 商业用户验证失败;V = 免费用户超过数量

* @throws Exception

*/

@Test

public void sendSms() throws Exception {

String qqCode = "416501600";//qq号码

String urlString = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx";

String xml = JxSendSmsTest.class.getClassLoader().getResource("SendInstantSms.xml").getFile();

String xmlFile=replace(xml, "qqCodeTmp", qqCode).getPath();

String soapActionString = "http://WebXml.com.cn/qqCheckOnline";

URL url = new URL(urlString);

HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

File fileToSend = new File(xmlFile);

byte[] buf = new byte[(int) fileToSend.length()];

new FileInputStream(xmlFile).read(buf);

httpConn.setRequestProperty("Content-Length", String.valueOf(buf.length));

httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");

httpConn.setRequestProperty("soapActionString", soapActionString);

httpConn.setRequestMethod("POST");

httpConn.setDoOutput(true);

httpConn.setDoInput(true);

OutputStream out = httpConn.getOutputStream();

out.write(buf);

out.close();

byte[] datas=readInputStream(httpConn.getInputStream());

String result=new String(datas);

//打印返回结果

System.out.println("result:" + result);

}

/**

* 文件内容替换

*

* @param inFileName 源文件

* @param from

* @param to

* @return 返回替换后文件

* @throws IOException

* @throws UnsupportedEncodingException

*/

public static File replace(String inFileName, String from, String to)

throws IOException, UnsupportedEncodingException {

File inFile = new File(inFileName);

BufferedReader in = new BufferedReader(new InputStreamReader(

new FileInputStream(inFile), "utf-8"));

File outFile = new File(inFile + ".tmp");

PrintWriter out = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")));

String reading;

while ((reading = in.readLine()) != null) {

out.println(reading.replaceAll(from, to));

}

out.close();

in.close();

//infile.delete(); //删除源文件

//outfile.renameTo(infile); //对临时文件重命名

return outFile;

}

/**

* 从输入流中读取数据

* @param inStream

* @return

* @throws Exception

*/

public static byte[] readInputStream(InputStream inStream) throws Exception{

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = 0;

while( (len = inStream.read(buffer)) !=-1 ){

outStream.write(buffer, 0, len);

}

byte[] data = outStream.toByteArray();//网页的二进制数据

outStream.close();

inStream.close();

return data;

}

}

 4、SendInstantSms.xml文件如下,放在src目录下

<?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>

<qqCheckOnline xmlns="http://WebXml.com.cn/">

<qqCode>qqCodeTmp</qqCode>

</qqCheckOnline>

</soap:Body>

</soap:Envelope>

---------------------------------------------------------------------------------------

Blog:http://www.cnblogs.com/linjiqin/
J2EE、Android、Linux、Oracle QQ交流群:142463980、158560018(满)

题外话:
本人来自铁观音的发源地——泉州安溪,正宗安溪铁观音,有需要的友友欢迎加我Q:416501600。
茶叶淘宝店:http://shop61968332.taobao.com/

以上是 Java使用SOAP获取webservice实例解析 的全部内容, 来源链接: utcz.com/z/394304.html

回到顶部