码迷,mamicode.com
首页 > Web开发 > 详细

使用ajax和urlconnection方式调用webservice服务

时间:2016-11-30 07:37:42      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:nec   element   exception   lips   author   ring   round   myeclips   state   

<html>
    <head>
        <title>使用ajax方式调用webservice服务</title>
        <script>
            var xhr = new XMLHttpRequest();
            function sendAjax(){
                var url = "http://192.168.13.66:8080/hello";//webservice服务的地址
                var requestBody = <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  + xmlns:q0="http://service.demo.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"  + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
                <soapenv:Body><q0:sayHi> <arg0>xiaoming</arg0></q0:sayHi></soapenv:Body></soapenv:Envelope>;//构造请求体,符合soap协议规范

                //打开连接
                xhr.open("POST",url,true);

                //重新设置请求头
                xhr.setRequestHeader("content-type","text/xml;charset=UTF-8");

                //指定回调函数
                xhr.onreadystatechange = _back;

                //发送请求
                xhr.send(requestBody);
            }

            //定义回调函数
            function _back(){
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        //获取服务器的响应数据
                        var ret = xhr.responseXML;
                        var ele = ret.getElementsByTagName("return")[0];
                        alert(ele.textContent);
                    }
                }
            }
        </script>
    </head>
    <body>
        <input type="button" value="使用ajax方式调用webservice服务" onclick="sendAjax();">
    </body>
</html>
requestBody 请求体,可以通过myeclipse自带插件,点击go以后,下边的请求体就是我们想要的格式。


二,使用urlconnection方式
package cn.demo.client.urlconnection;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

/**
 * 使用urlconnection方式调用webservice服务
 * @author zhaoqx
 *
 */
public class App {
    public static void main(String[] args) throws Exception {
        URL wsUrl = new URL("http://192.168.13.66:8080/hello");
        HttpURLConnection conn = (HttpURLConnection) wsUrl.openConnection();
        
        //构造请求体
        String requestBody = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " + 
                                "xmlns:q0=\"http://service.demo.cn/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "+
                                "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"+
                                "<soapenv:Body><q0:sayHi><arg0>xiaoming</arg0></q0:sayHi></soapenv:Body></soapenv:Envelope>";
        //设置请求的参数
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("content-type", "text/xml;charset=UTF-8");
        
        //向服务端写数据
        conn.getOutputStream().write(requestBody.getBytes());
        
        int responseCode = conn.getResponseCode();
        if(responseCode == 200){
            //使用输入流获取服务端响应数据
            InputStream in = conn.getInputStream();
            byte[] b = new byte[1024];
            int len = 0;
            StringBuffer sb = new StringBuffer();
            while((len = in.read(b)) != -1){
                String s = new String(b, 0, len,"UTF-8");
                sb.append(s);
            }
            System.out.println(sb.toString());
            in.close();
        }
        
    }
}

 

使用ajax和urlconnection方式调用webservice服务

标签:nec   element   exception   lips   author   ring   round   myeclips   state   

原文地址:http://www.cnblogs.com/MessiAndDream/p/6116140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!