`

手动连接webservice

阅读更多

  webservice调用方式:

1.httpget

2.httpost

3.httpsoap

其中soap的优点是可以传递结构化的数据,前两者不行。

 

webservice的通讯原理是其底层也是通过http传输的。所以手动连接webservice server有两种方式。

第一种是使用jaxm

参考如下:

http://www.cnblogs.com/chenying99/archive/2013/05/23/3094128.html

 

这种方法比较复杂,使用soapconnection

public static void post2WebService(String content, String url) {

		try {

			// First create the connection
			SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory
					.newInstance();
			SOAPConnection connection = soapConnFactory.createConnection();

			// Next, create the actual message
			MessageFactory messageFactory = MessageFactory.newInstance();
			SOAPMessage message = messageFactory.createMessage();

			// Create objects for the message parts
			SOAPPart soapPart = message.getSOAPPart();
			SOAPEnvelope envelope = soapPart.getEnvelope();
			SOAPBody body = envelope.getBody();

			// String to inputstream
			InputStream inputstream = new ByteArrayInputStream(
					content.getBytes("UTF-8"));
			// Populate the Message
			StreamSource preppedMsgSrc = new StreamSource(inputstream);
			soapPart.setContent(preppedMsgSrc);
			// Save the message
			message.saveChanges();

			// Send the message and get a reply

			// Set the destination
			URLEndpoint destination = new URLEndpoint(url);
			// Send the message
			SOAPMessage reply = connection.call(message, destination);

			// Create the transformer
			TransformerFactory transformerFactory = TransformerFactory
					.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			// Extract the content of the reply
			Source sourceContent = reply.getSOAPPart().getContent();
			
			// Set the output for the transformation
			StringWriter writer = new StringWriter();
//			StreamResult result = new StreamResult(System.out);
			StreamResult result = new StreamResult(writer);
			transformer.transform(sourceContent, result);
			System.out.println("result : " + writer.toString());

			// Close the connection
			connection.close();

		} catch (Exception e) {
			LOG.error("post2WebService error : " + e.getMessage());
		}

	}

 

此处是一小段代码参考,如何将streamResult转换为String的

try {
    StreamSource source = new StreamSource(new StringReader("<xml>blabla</xml>"));
    StringWriter writer = new StringWriter();
    StreamResult result = new StreamResult(writer);
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Transformer transformer = tFactory.newTransformer();
    transformer.transform(source,result);
    String strResult = writer.toString();
} catch (Exception e) {
    e.printStackTrace();
} 

这里还需要使用到jaxm-api.jar

 

第一种方法较为复杂,现在介绍第二种方法,直接使用httpConnection post message

public static String sendPost2WS(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            //open url connect
            URLConnection conn = realUrl.openConnection();
            //set common properties
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            //send POST request must set 2 lins below
            conn.setDoOutput(true);
            conn.setDoInput(true);
            //get URLConnection object out put stream
            out = new PrintWriter(conn.getOutputStream());
            //send request parameters
            out.print(param);
            // flush out put stream cache
            out.flush();
            //define BufferedReader to get the URL response
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("send POST has error : "+e.getMessage());
            e.printStackTrace();
        }
        //close in & out put stream
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }   

 

 

分享到:
评论

相关推荐

    DashBoard连接Webservice Demo

    本文将深入探讨这两个概念,并结合"DashBoard连接Webservice Demo"的主题,介绍如何将它们整合以实现更高效的数据管理和分析。 首先,让我们来理解一下“Dashboard”。在信息技术中,Dashboard通常指的是一个交互式...

    连接webservice

    2. **生成客户端代码** - 使用SDK、工具或手动编写代码来创建客户端,这个客户端会处理与服务的通信细节。 3. **调用服务** - 在客户端代码中,根据服务接口定义,构造请求并发送,然后接收并解析响应。 4. **异常...

    调用https协议的webservice,以及证书手动加载

    4. **建立连接**:在创建HTTPS连接时,指定使用我们手动加载的证书进行验证。 在实际开发中,处理HTTPS和Web Service调用时,我们还需要关注错误处理,如证书链不完整、证书过期、未信任的CA等问题。此外,对于性能...

    远程访问WebService的方法

    如果WebService需要访问数据库,建议将连接字符串配置在`web.config`文件中,以便于管理和维护。 **操作步骤**: 1. 打开项目中的`web.config`文件。 2. 添加或修改`connectionStrings`节点以包含数据库连接字符串...

    Delphi调用C#的Webservice返回Dataset

    2. **C#开发Webservice**: 在C#中,可以使用.NET框架的ASP.NET技术创建Web服务。首先,创建一个新的ASP.NET Web服务项目,然后定义一个或多个公共方法,这些方法将在服务中公开。例如,为Delphi客户端提供操作...

    vc++连接webservice soap协议

    - 编写SOAP请求:根据Web服务的WSDL(Web Service Description Language)定义,手动编写或者利用工具自动生成SOAP请求的XML结构。 - 发送请求:使用HTTP POST方法,将SOAP请求发送到Web服务的URL。 - 处理响应:...

    PB调用WebService方法

    这段代码展示了如何创建一个SOAP连接对象,并通过这个对象实例化WebService接口,进而调用WebService的方法。调用完成后,通过`messagebox`函数显示结果。 #### 三、总结 通过上述步骤,我们可以清晰地了解到如何...

    eclipse中使用webservice远程服务 超详细教程

    - 可以通过Maven或者手动添加依赖的方式引入WebService相关的库文件,例如Apache CXF、Apache Axis2等。 3. **编写WebService接口和服务实现类**: - 创建一个Java接口,定义所需的方法。 - 实现该接口,编写...

    WebService的简单认识及应用(内含项目数据库及作业)

    3. **WSDL编写**:学习如何手动或自动生成WSDL文件,以描述你的服务接口。 4. **服务的调用**:掌握如何在客户端代码中使用HTTP请求调用WebService,解析返回的SOAP响应。 5. **安全与认证**:理解如何为WebService...

    cxf技术连接webservice接口所需所有jar包,我自己做项目时自己用的

    5. 创建客户端:使用CXF的WSDL2Java工具,从服务的WSDL生成客户端代码,或者手动编写客户端代码调用服务。 总的来说,CXF提供了一套完整的框架,简化了Web服务的开发和使用过程。通过合理的JAR包配置,开发者可以...

    pb webservice

    标题“pb webservice”指的是在PowerBuilder(简称PB)中调用Web Service的相关技术。PowerBuilder是一款强大的客户端/服务器应用程序开发工具,而Web Service是一种基于开放标准(如SOAP、WSDL和UDDI)的分布式计算...

    基于 AJAX和Webservice 的长轮询方式ServerPush技术模拟

    在 ServerPush 场景下,AJAX 发挥了关键作用,允许浏览器持续不断地向服务器询问新数据,而无需用户手动触发。 **Webservice** 是一组提供特定功能的接口,可以通过网络进行调用。在 AJAX 中,Webservice 可以作为...

    PB调用webservice

    在现代IT环境中,与Web服务的交互变得越来越重要,而PB9(PowerBuilder 9)提供了调用WebService的能力,使得PB应用程序能够无缝连接到基于Web的API和服务。本文将深入探讨PB9如何调用WebService,包括必要的步骤、...

    CXF webservice+mybatis

    1. **Mybatis的优势**:Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它支持动态SQL,可以更方便地处理复杂的查询条件。 2. **Mybatis配置**:Mybatis通过配置文件或注解来定义数据库连接、SQL...

    WebService服务的三种调用方式

    - 通过`RPCServiceClient`类来初始化一个客户端连接。 - 设置目标服务的URL地址,通常包含`.wsdl`后缀,用于获取服务的WSDL文档。 - 使用`QName`对象来指定调用的方法名以及方法所在的命名空间。 - 调用`...

    Java与.net开发webservice详解大全

    - 客户端不再直接使用Web引用,而是通过.NET的SOAP客户端API(如System.ServiceModel)手动构建请求和解析响应。这通常涉及理解WSDL文件,创建适当的SOAP消息,并发送到服务端。 4. **服务端是.NET编写的,客户端...

    二、SAP调用外部WebService.实施步骤

    setp1: 在事务窗口输入 Tcode: soamanager ,有可能无法打开连接窗口,在无法打 开新窗口的情况下,输入如下地址 setp2:进入 Web 服务配置 setp3:找到企业服务 Class 类 ,双击打开【配置】--&gt;【创建】--&gt;【手动...

    webservice接口代码生成工具

    这样,开发者无需手动编写复杂的SOAP请求和解析响应,可以直接调用生成的客户端类来与Web Service交互。 3. **SOAP协议**:SOAP是Web Service的核心协议,它规定了消息的结构和传输方式。生成的客户端代码通常会...

    PB 调用webservice 几种方式

    这种方式需要手动构建和解析XML消息,虽然灵活性高,但相比前两种方法,开发工作量会增加。 4. **JDBC/ODBC Bridge to Web Services**: 对于已经具备数据库连接能力的应用,PB 11.5也提供了通过JDBC或ODBC桥接器...

Global site tag (gtag.js) - Google Analytics