`

java 使用HttpC'lient 解析webService

 
阅读更多

如果你的webService 地址直接类似于(天气预报:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)这样的:


 

 

点击你要解析的方法,进入如下:

 

 

  然后使用HttpClient 解析webService :

 

package com.example.util;

import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.List;

/**
 * Created by xjw on 2017/6/29.
 */
public class WebServiceUtil {

    private static Logger log = LoggerFactory.getLogger("webServiceUtil-log");
    private static int socketTimeOut = 30000;//请求超时时间
    private static int connectTimeOut = 30000;//传输超时时间

    public static void main(String[] args){
        String storeInfoUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
        String contentType = "text/xml; charset=utf-8";//soap1.1 的conetentType
        String soapAction = "http://WebXml.com.cn/getSupportCity";
//        String soapAction ="";
//        String contentType = "application/soap+xml; charset=utf-8"; //soap1.2 的conetentType
        String ProvinceName = "上海";
        String soapXml = "<?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" +
                "    <getSupportCity xmlns=\"http://WebXml.com.cn/\">\n" +
                "      <byProvinceName>"+ProvinceName+"</byProvinceName>\n" +
                "    </getSupportCity>\n" +
                "  </soap:Body>\n" +
                "</soap:Envelope>";
        InputStream input = WebServiceUtil.soap(storeInfoUrl, soapXml, soapAction, contentType);
        //下面是解析 返回的 XML
        SAXReader saxReader = new SAXReader();
        Document document = null;
        try {
            document = saxReader.read(input);
            Element root = document.getRootElement();
          Dom4jUtils.getNodes(root);
          Element body = root.element("Body");
          Element getSupportCityResponse = body.element("getSupportCityResponse");
          Element getSupportCityResult = getSupportCityResponse.element("getSupportCityResult");
            List<Element> strings =  getSupportCityResult.elements();
            for(Element e : strings){
               System.out.println(e.getTextTrim());
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }



    public static InputStream soap(String url,String soapXml,String soapAction,String ContentType)  {


        InputStream soapResponseData = null;
        // 创建HttpClientBuilder
        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
        // HttpClient
        CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
        HttpPost httpPost = new HttpPost(url);
         //设置请求超时时间 和 传输超时时间
        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(socketTimeOut)
                .setConnectTimeout(connectTimeOut).build();
        httpPost.setConfig(requestConfig);

        httpPost.setHeader("Content-Type",ContentType);
        httpPost.setHeader("SOAPAction",soapAction);
        StringEntity data = new StringEntity(soapXml, Charset.forName("UTF-8"));
        httpPost.setEntity(data);
        CloseableHttpResponse response = null;
        try {
            response = closeableHttpClient.execute(httpPost);
            HttpEntity httpEntity = response.getEntity();
            if (httpEntity !=null){
                //打印响应内容
                byte[]  bytes = EntityUtils.toByteArray(httpEntity);
                soapResponseData =new ByteArrayInputStream(bytes);
                log.info("---请求webService之后的返回值是----"+new String(bytes));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                closeableHttpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }



        return soapResponseData;






    }
}

 

 

 如果 接口地址是 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 带 ?wsdl

需要使用 soapUI 等工具:

SoapUI工具下载地址:链接:http://pan.baidu.com/s/1hrAyDaG 密码:ah3m

 

 

 
 


 

然后后面的的解析和上面的一样。

 

  • 大小: 142.1 KB
  • 大小: 90.8 KB
  • 大小: 66 KB
  • 大小: 50.1 KB
分享到:
评论

相关推荐

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    1. JAVA HttpClient库的使用 2. HTTPS协议的使用 3. SSL/TLS证书的使用 4. X509TrustManager的使用 5. DefaultHttpClient类的使用 6. HttpClient的自定义 7. POST请求的发送 8. 请求头和请求体的指定 9. HTTPS服务器...

    Go-httpc这是一个发起http请求的客户端库

    client := httpc.NewClient() response, err := client.Get("http://example.com").Execute() ``` 在这个例子中,`NewClient()`创建了一个新的客户端实例,`Get("http://example.com")`设置了请求方法和URL,最后`...

    httpc

    httpc是使用HTTP作为通信协议的TCP套接字编程实现的客户端库。 它是一个类似于curl / telnet的HTTP库,用于演示GET,POST和HEAD功能(HTTP)。 下面介绍了最终命令行的选项。 httpc(get | post)[-v](-h“ k:v”...

    httpc:http客户端包装

    2. **超时控制**:HTTPC可能提供了更高级的超时控制机制,不仅包括请求的整体超时,还可以设置每个部分(如DNS解析、TCP连接、读取响应头和主体等)的单独超时,确保应用在长时间无响应时能够快速恢复。 3. **自动...

    mio_httpc:基于mio的异步和同步HTTP客户端

    mio_httpc是仅在mio之上运行的异步http客户端。 ... 除了CallBuilder :: exec以外,任何呼叫都不会阻塞,即使是DNS解析也不会阻塞,因为它是在内部实现的以避免阻塞。 为了使https工作,mio_httpc...mio_httpc使用默认的

    STM32_W5500_HTTPC_Download_File.rar

    5. 文件保存:STM32F103RC解析响应,确认文件大小和接收状态,然后将文件内容保存到存储器中。 6. 关闭连接:下载完成后,关闭TCP连接,释放资源。 在"31_HTTPC_Download_File"这个文件中,可能包含了以下内容: 1....

    httpC语言经典实例教程

    GetHost 函数是该程序的核心函数,负责解析 URL 并提取网站地址、端口和文件名。该函数的实现过程为: 1. 首先,检查输入字符串 src 是否以 "http://" 或 "https://" 开头,如果是,则将其去除。 2. 然后,使用 ...

    rust-httpc:用 Rust 编写的 http 客户端库。 (前 rust-http-helper)

    锈-httpc 一个 http 客户端库。 工程进行中。 概念证明。 代码需要清理。 支持以下: HTTP/1.0 基础 HTTP/1.1(部分) HTTP 方法:GET/POST/PUT ... HTTP 标头(设置/获取) HTTP 分块传输编码 简单的 ...

    CppHttpDemo.zip_C++小demo_fivee5p_httpC++_http客户端_library4cb

    本篇将深入解析标题为"CppHttpDemo.zip"的压缩包文件,它包含了一个用C++编写的HTTP服务器和客户端的小型示例——"fivee5p_httpC++_http客户端_library4cb"。这个项目旨在帮助开发者了解HTTP协议的基本工作原理以及...

    avaje-http-client

    JDK 11+ Java Http Client的轻量级包装 添加了用于请求构造URL和有效负载的流畅API 使用Jackson或Gson添加请求和响应的JSON编组/解组 添加请求/响应日志 相依性 &lt; groupId&gt;io.avaje &lt; artifactId&gt;avaje-...

    httpc::satellite_antenna:向HTTP服务器发出请求

    httpc 绑定到Erlang的内置HTTP客户端httpc 。 import gleam / httpc import gleam / http.{Get} import gleam / should pub fn main () { // Prepare a HTTP request record let req = http. default_req () | ...

    HttpClient实现POST GET和文件下载

    HttpClient是Apache基金会开发的一个HTTP客户端库,广泛应用于Java编程中,用于执行HTTP请求,包括GET、POST以及文件下载等操作。...理解并熟练掌握HttpClient的使用,对于任何Java开发者都是必要的技能。

    micrium_stm32f4-discovery_os3-tcpip-httpc-no-source.zip

    首先,我们来看标题中的"micrium_stm32f4-discovery_os3-tcpip-httpc-no-source.zip",这表明该压缩包包含了Micrium公司提供的STM32F4 Discovery开发板上的uC/OS-III TCP/IP和HTTP客户端的示例代码,但不包含源代码...

    erlang使用post方式发送json数据

    学习erlang的时候尝试编写的小例子,使用post方式发送json数据来进行http请求,希望能帮到大家~

    connection reset解决方案(亲测可用).md

    connection reset解决方案(亲测可用).md

    httpClient

    5. **处理实体**:如果响应包含实体,例如JSON或XML数据,可以使用`HttpEntity`接口来读取和解析实体内容。 在实际使用中,你可能还需要处理其他复杂情况,如处理重定向、处理cookies、使用HTTPS等。HttpClient库...

    STM32+LWIP+OS http下载文件C语言实现

    在接收过程中,可能需要使用`lwip_recv()`或`lwip_read()`函数,并且需要注意处理数据分块的问题,因为大文件可能会被分成多个TCP段。 为了确保任务的并发执行,操作系统在这里起着关键作用。你可以创建一个任务...

    UDP-HTTP

    HTTPClientApplication 学生 威廉·安德鲁·路西尔(40033412) 安东尼·勒(40001837) 我如何运行(威廉) Maven包 Httpfs CD目标 java -jar Httpfs.jar -v -d /home/... 示例: java -jar Httpc.jar GET -

    soluvas-scrape:声明式网站抓取Java中的libraryframework。 使用Jaunt

    使用Java的声明性网站抓取库/框架。 使用Jaunt。 基础图书馆 。 主引擎。 TBD: + 用于需要JavaScript支持的高级用例。 待定: 。 对于更简单的用例,jSoup可能就足够了。 计划的输出格式和数据库 JSON (待办...

Global site tag (gtag.js) - Google Analytics