`
benqend
  • 浏览: 33076 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

httpclient 调用webservice

    博客分类:
  • j2se
 
阅读更多
使用HttpClient对Web Service调用

用到的jar包有:
    commons-codec-1.3.jar
    commons-httpclient-3.0.jar
    commons-logging-1.0.4.jar


具体流程大致这样:
       
        String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
        "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" +
          "<soap12:Body>" +
           " <qqCheckOnline xmlns=\"http://WebXml.com.cn/\">" +
          "    <qqCode>349104641</qqCode>" +
         "   </qqCheckOnline>" +
        "  </soap12:Body>" +
        "</soap12:Envelope>";
       
        System.out.println(soapRequestData);


    //PostMethod postMethod = new PostMethod("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl");
   
    PostMethod postMethod = new PostMethod("http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl");

   // 然后把Soap请求数据添加到PostMethod中


    byte[] b = soapRequestData.getBytes("utf-8");
    InputStream is = new ByteArrayInputStream(b,0,b.length);
    RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8");
    postMethod.setRequestEntity(re);
   
    //最后生成一个HttpClient对象,并发出postMethod请求

    HttpClient httpClient = new HttpClient();
    int statusCode = httpClient.executeMethod(postMethod);
    String soapResponseData =  postMethod.getResponseBodyAsString();
       
       
    System.out.print(soapResponseData);



动态构造调用串的话如下实现:


    private String tns;
    private String methodName;
    private String wsdlLocation;
    private String soapResponseData;

private int invoke(Map<String, String> patameterMap) throws Exception {
        PostMethod postMethod = new PostMethod(wsdlLocation);
        String soapRequestData = buildRequestData(patameterMap);

        byte[] bytes = soapRequestData.getBytes("utf-8");
        InputStream inputStream = new ByteArrayInputStream(bytes, 0,
                bytes.length);
        RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,
                bytes.length, "application/soap+xml; charset=utf-8");
        postMethod.setRequestEntity(requestEntity);

        HttpClient httpClient = new HttpClient();
        int statusCode = httpClient.executeMethod(postMethod);
        soapResponseData = postMethod.getResponseBodyAsString();
        return statusCode;
    }

    private String buildRequestData(Map<String, String> patameterMap) {
        StringBuffer soapRequestData = new StringBuffer();
        soapRequestData.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        soapRequestData
                .append("<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">");
        soapRequestData.append("<soap12:Body>");
        soapRequestData.append("<" + methodName + " xmlns=\"" + tns + "\">");
        Set<String> nameSet = patameterMap.keySet();
        for (String name : nameSet) {
            soapRequestData.append("<" + name + ">" + patameterMap.get(name)
                    + "</" + name + ">");
        }
        soapRequestData.append("</" + methodName + ">");
        soapRequestData.append("</soap12:Body>");
        soapRequestData.append("</soap12:Envelope>");

        return soapRequestData.toString();
    }
分享到:
评论
1 楼 gezi2213 2012-11-23  
commons-httpclient-3.0.jar
传个包给我吧

相关推荐

    HttpClient 调用WebService示例

    在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService通常涉及SOAP(Simple Object Access Protocol)或RESTful API。HttpClient可以处理这两种类型的Web服务。在本示例中,我们假设...

    httpClient调用webservice接口

    ### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。WebService提供了通过HTTP协议进行远程过程调用的能力,...

    httpclient调用webservice.txt

    httpclient调用webservice.txt

    ETL KETTLE 中利用Httpclient 调用webservice接口获取XML数据,并解析XML 数据

    ETL KETTLE 中利用Httpclient 调用webservice接口获取XML数据,并解析XML 数据。 完整的KTR实例

    Httpclient调用WebService所需jar包

    本篇将详细讲解使用HttpClient调用WebService所需的jar包以及它们的功能。 首先,我们来看标题提到的"Httpclient调用WebService所需jar包"。HttpClient是一个灵活且功能丰富的Java库,它允许开发人员执行各种HTTP...

    webservice调用实例,通过HttpClient调用

    总之,通过HttpClient调用Web服务是一个涉及网络通信和HTTP协议理解的过程。在实际开发中,了解HttpClient的使用方法和最佳实践,可以帮助我们构建稳定、高效的Web服务客户端。结合Maven构建工具,可以轻松管理项目...

    提高WebService速度方法

    当客户端首次调用一个WebService时,由于.NET框架的Just-In-Time (JIT)编译机制,服务的代码会被转化为机器码,即动态库,以便运行在特定的硬件上。这个JIT编译过程会消耗一定的时间,特别是在处理复杂的业务逻辑时...

    c# 三种方法调用WebService接口

    C#中调用WebService接口是.NET开发中的一个重要环节,它允许.NET应用程序通过网络与远程服务器上的服务进行交互。文章《c# 三种方法调用WebService接口》介绍了在C#环境下通过三种不同的方法实现对WebService接口的...

    httpclient实现webservice客户端

    下面是一段简单的示例代码,展示了如何使用HttpClient发送一个POST请求,模拟调用一个SOAP WebService: ```java import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache....

    使用Http post的方式调用webservice

    在调用WebService时,POST方法可以承载请求参数,将其封装在请求体中发送到服务端。 1. **构建HTTP请求** 在Java中,可以使用`java.net.URL`、`java.net.HttpURLConnection`或第三方库如Apache HttpClient来构建...

    JAVA调用WebService的方法.docx

    #### 三、使用HttpClient调用WebService **1. 定义SOAP请求数据** - **步骤说明**: - 首先,需要定义SOAP请求数据,这部分通常可以手动编写或使用工具自动生成。 - 使用`String`类型存储SOAP请求数据。 - 示例...

    拼接xml调用webservice

    本主题的核心是"拼接XML调用WebService",这通常指的是通过构建XML字符串来构造请求,然后发送该请求到一个Web Service接口以获取响应。以下是对这个过程的详细解释: 1. **XML基础**:XML是一种结构化标记语言,它...

    java 调用webservice使用HttpClient和XFire两种方式

    以下是一段简单的HttpClient调用Web Service的代码示例: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://service-url"); StringEntity input ...

    java 调用 webService工具类

    本工具类主要用于简化这个过程,确保开发者能够高效、可靠地调用WebService。下面我们将详细探讨Java调用WebService的相关知识点。 1. **WebService概念**: WebService是一种基于互联网的、平台无关的应用程序...

    .Net动态调用WebService

    总结,.NET动态调用WebService涉及的关键技术包括SOAP协议的理解、选择合适的调用类(如SoapHttpClientProtocol或HttpClient)、数据序列化和反序列化、异常处理以及安全措施。了解并掌握这些知识点,将使你在开发中...

    动态调用WebService.

    动态调用Web Service是编程中一个关键的概念,它允许程序在运行时根据需要选择和调用不同的Web Service,而不是在编译时就固定下来。这种灵活性对于构建可扩展和可维护的系统至关重要。 Web Service通常基于SOAP...

    如何在WPF应用程序中通过HttpClient调用Web API

    在.NET框架中,HttpClient类提供了异步调用Web API的能力。本文将详细介绍如何在WPF应用程序中使用HttpClient异步调用Web API。 首先,需要理解异步编程的重要性。传统的同步网络请求会阻塞调用线程,导致UI无法...

    java android 调用webservice

    本篇将详细讲解如何在Android应用中使用Java调用Webservice。 一、理解Web服务 Web服务是一种基于互联网的、标准化的服务交互方式,它允许不同系统之间的应用程序共享数据和功能。常见的Web服务有SOAP(Simple ...

    REST WebService 调用工具类

    相信大家在调用rest webservice通常使用httpclient.该示例代码是使用httpconnection的形式,以POST和GET两种方式提交调用REST WebService。在项目中一直使用的工具类,分享给大家

Global site tag (gtag.js) - Google Analytics