最简单易懂的webService客户端之soap请求

代码准备:

  1.网络上有提供一些免费的服务器测试地址,可以上这里找一找:https://my.oschina.net/CraneHe/blog/183471

  2.我选择了一个翻译地址:http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx

    2.1打开之后看到该地址下有一个方法:

    2.2点击进入,网站会提供该方法的客户端请求xml格式:

    2.3,这个红框部分就是我们要的,将它写入代码,就可以完成请求了.

    注意:以上还是获取soap请求xml的方法,也是比较入门的方式,有经验的筒子直接上wsdl利用解释文档也可以自己写xml...

然后是代码,我直接附上代码,大家直接复制即可运行,附注释.

Translate.class
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
 * Created by garfield on 2016/10/16.
 */

public class Translate {
    public static void translate(String word ) throws Exception {
        //地址
        String urlString = "http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx ";
        //方法
        String soapActionString = "http://WebXml.com.cn/getEnCnTwoWayTranslator";
        URL url = new URL(urlString);
        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
        //拼接请求体,此处也可以在外面写xml文件然后读取,但是为了方便一个文件搞定,而且参数也比较好传递我们直接String拼接(直接将网页上的复制进来即可)
        String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<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/\">\n" +
                "    <soap:Body>\n" +
                "        <getEnCnTwoWayTranslator xmlns=\"http://WebXml.com.cn/\">\n" +
                "            <Word>" + word + "</Word>\n" +
                "        </getEnCnTwoWayTranslator>\n" +
                "    </soap:Body>\n" +
                "</soap:Envelope>";
        byte[] buf = soap.getBytes();
        //设置一些头参数
        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);
        System.out.println(result.substring(result.indexOf("string") - 1,result.lastIndexOf("string") + 7));
        System.out.println(result.substring(result.indexOf("string") - 1,result.lastIndexOf("string") + 7).replaceAll("</{0,1}(string)?>",""));
    }

    /**
     * 从输入流中读取数据
     *
     * @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;
    }

    public static void main(String[] args) throws Exception {
        translate("sea");
    }

运行结果:

result:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><getEnCnTwoWayTranslatorResponse xmlns="http://WebXml.com.cn/"><getEnCnTwoWayTranslatorResult><string>sea: [ si: ]</string><string>n. 海,海洋 |</string></getEnCnTwoWayTranslatorResult></getEnCnTwoWayTranslatorResponse></soap:Body></soap:Envelope>
<string>sea: [ si: ]</string><string>n. 海,海洋 |</string>
sea: [ si: ]n. 海,海洋 |

  第一行是直接返回的结果,下面两行帮助理解解析,最后得到sea单词的解释,是不是简单清楚...

时间: 2024-10-20 17:49:45

最简单易懂的webService客户端之soap请求的相关文章

Java发布webservice应用并发送SOAP请求调用

webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML的解析,代价是你不得不在你的框架中添加对于这些框架的依赖.个人观点是:服务端使用这些框架还行,如果做客户端,没必要使用这些框架,只需使用httpclient即可. 一.创建并发布一个简单的webservice应用 1.webservice 代码: import javax.jws.WebMethod

Eclipse内嵌的webservice客户端

概述 Eclipse内嵌的webservice客户端,可用于发起请求,查看结果,展示请求和响应的报文. 详情 在Java EE视图,可以看到内嵌的webservice客户端浏览器登陆按钮 点击打开浏览器,按照图示依次点击,输入wsdl的url,点击go 在下图中点击add链接,会打开测试窗口 在下图中,输入参数,点击go,可以在Status窗口看到请求结果 为方便查看,双击Status标题栏,可以最大化/还原Status窗口:点击Source链接,可以查看请求/响应的报文 报文是xml格式的so

Web Service之Soap请求响应内容中文编码解密

java模拟Soap请求测试Web Service接口,发现Web Service响应内容中的中文竟然是编码格式.比如: 中文:退保成功 Soap中文编码:退保成功 我仔细分析后发现,退编码实际上就是Unicode编码的Soap版,正规的Unicode编码是\u9000,Soap改成自己的格式&#x[4位内容];格式. 还有其他的比如: 换行,Soap编码: 单引号,Soap为转换为html编码:&apos; 与号,Soap为转换为html编码:& 小于号,Soap为转换为html

cxf 生成 webservice 客户端

一.cxf 生成 webservice 客户端 1.接口路径 http://localhost:8080/cxfserver/webservice/userWS?wsdl 2.进入你需要放置 webservice 客户端代码的包,进入这个包所在的系统路径,进入 cmd 3.执行命令 wsimport -keep http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl 或者 wsdl2java -client http://ws.webxml

WebService发布协议--SOAP和REST的区别

HTTP是标准超文本传输协议.使用对参数进行编码并将参数作为键值对传递,还使用关联的请求语义.每个协议都包含一系列HTTP请求标头及其他一些信息,定义客户端向服务器请求哪些内容,服务器用一系列HTTP响应标头和所请求的数据进行响应.HTTP-GET 使用 MIME 类型application/x-www-form-urlencoded(将追加到处理请求的服务器的 URL 中)以 URL 编码文本的形式传递其参数. URL 编码是一种字符编码形式,可确保传递的参数中包含一致性文本,例如将空格编码为

用post来进行Soap请求

最近调了一个Soap请求C# webservice的项目.网上坑不少. 使用原生的SoapClient库请求也是失败.只好用post来进行模拟了.代码贴出来,给大家参考一下. <?php namespace App\Services\Proxy; use Log; class Crm { private $host; private $namespace; private $app_secret; private $username; private $values; public functi

【性能诊断】四、单功能场景的性能分析(RedGate,找到同一个客户端的并发请求被串行化问题)

问题描述: 客户端js连续发起两个异步http请求,请求地址相同,但参数不同:POST http://*.*.*.*/*****/webservice/RESTFulWebService/RESTFulHandlerForWeb.ashx HTTP/1.1 服务器端第二方法的响应时间明显很长(不正常),在ProcessRequest方法上增加日志后发现,第二个方法的开始时间明显延迟了大约0.5秒 后台跟踪发现累计SQL执行时间不超过50毫秒: 使用log记录应用处理的响应时间(11表示handl

[转]C#通过Http发送Soap请求

/// <summary>        /// 发送SOAP请求,并返回响应xml        /// </summary>        /// <param name="url">请求地址</param>        /// <param name="datastr">SOAP请求信息</param>        /// <returns>返回响应信息</retur

ios webservice编程:soap封装调用,返回xml,json解析

一.简介 webservice调用,包括soap请求与响应,返回(xml,json)解析. soap请求与响应:ios webservice+soap编程 xml,json解析:ios XML,JSON,数组解析并转换成NSMutableArray(List<class>) 二.项目 完整项目:点击下载 三.效果 soap请求与响应: xml,json解析: