webService调用浅谈(二)

第二种使用java语言调用webservice方法如下:

第二种方法使用的httpclient的方法,需要引入的包为apache的包

import org.apache.*

下面是测试代码:

public String updateLeechdom() throws Exception

{

  //首先定义访问的格式和头,这部分的由来最简单的办法就是直接将对方提供的webservice地址在浏览器中访问获取  

  //注意用转义符处理特殊符号

  String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?> ";
      xml = xml + "<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/\">";
      xml = xml + "<soap:Body>";
      xml = xml + "<function1 xmlns=\"namespace\">";
      xml = xml +    "<para1>" + para1 + "</para1>";
      xml = xml + "<para2>" + para2 + "</para2>";
       xml = xml + "</function2>";
      xml = xml + "</soap:Body>";
      xml = xml + "</soap:Envelope>";

  //用来盛放返回值

String result ="";

PostMethod postMethod = new  PostMethod(webServiceURL);
      HttpClientParams httpClientParams = new HttpClientParams();

  //设置链接的访问时间
      httpClientParams.setConnectionManagerTimeout(999999);

  //设置超时时间
      httpClientParams.setSoTimeout(999999);

  //创建http线程
      MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
      HttpClient httpClient = new HttpClient(httpClientParams,connectionManager);
      postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler(11, true));
      try

{

  //设置返回值的编码格式
       postMethod.setRequestEntity(new StringRequestEntity(xml, "text/xml", "GBK"));
       postMethod.addRequestHeader("Connection", "close");

  //设置一个返回的状态值用以判断是否调用webservice成功
       int statusCode = httpClient.executeMethod(postMethod);
       if (statusCode != HttpStatus.SC_OK) {
       } else {

  //下面还是老规矩进行流和字符串之间的转换
          InputStream out = postMethod.getResponseBodyAsStream();
         BufferedReader in = new BufferedReader(new InputStreamReader(out));
         StringBuffer buffer = new StringBuffer();
         String line = "";
         while ((line = in.readLine()) != null){
           buffer.append(line);
         }
         result = buffer.toString();

}
     } catch (Exception e) {
 
     } finally {
        postMethod.releaseConnection();
     }
        return result;

}

下面是第一种调用方式的传送门,感兴趣的朋友可以也去看看。

http://www.cnblogs.com/Sabasdian/p/JavaAndWebservice_1.html

时间: 2024-08-07 00:05:43

webService调用浅谈(二)的相关文章

webService调用浅谈(一)

本文主要讲述,使用java语言调用webservice的几种方法,和针对于获取的报文文件解析的一些看法. 再次之前先推荐一种工具,soapui这个工具可以很好的实现测试webservice的连通性,并且可以直接获取. webservice服务上对应的值. 第一部分:调用方法 第一种方式采用soap的方式:下面是需要引用的包axis.jar import javax.xml.*; 下面附上一部分的测试代码: public String getwebservice() throws Exceptio

浅谈二维中的树状数组与线段树

一般来说,树状数组可以实现的东西线段树均可胜任,实际应用中也是如此.但是在二维中,线段树的操作变得太过复杂,更新子矩阵时第一维的lazy标记更是麻烦到不行. 但是树状数组在某些询问中又无法胜任,如最值等不符合区间减法的询问.此时就需要根据线段树与树状数组的优缺点来选择了. 做一下基本操作的对比,如下图. 因为线段树为自上向下更新,从而可以使用lazy标记使得矩阵的更新变的高校起来,几个不足就是代码长,代码长和代码长. 对于将将矩阵内元素变为某个值,因为树状数组自下向上更新,且要满足区间加法等限制

webservice安全性浅谈

原文地址:http://www.cnblogs.com/chhuic/archive/2009/11/19/1606109.html 做项目时,经常会用到WebService来通讯,但WebService发布后为了能调用,一般都通过发布到IIS后调用 的.在IIS里可以通过匿名访问,但这样大家都可能访问,不安全,因此可以提供操作系统分配一个帐号来登录到IIS .这只是对访问服务器上的文件进行了限制,以前我也是采用这种方式,上次看到另 一种方法来防止 别人调用WebService,就是对方面进行加

C# 方法 虚方法的调用浅谈 引用kdalan的博文

我们在面试中经常碰到有关多态的问题,之前我也一直被此类问题所困扰,闹不清到底执行哪个方法. 先给出一道简单的面试题,大家猜猜看,输出是? public class A    {        public void MethodF()         {             Console.WriteLine("A.F");         }        public virtual void MethodG()         {             Console.Wr

关于自动化学习浅谈二

什么是自动化测试?自动化测试的原理是什么?常用哪些工具?常用哪些框架?工具的原理又是什么?自动化如何学习?自动化的优点与缺点是什么?价值在哪里?学习自动化测试要了解与掌握哪些内容?哪些项目适合自动化测试呢? 想学习自动化测试首先得明白以上一些问题,不然学着只能知其然,不知其所以然. 1,什么是自动化测试?优缺点是什么?价值在哪里? 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程. 从它的定义中是不是所有人为驱动的测试都可以转化为机器执行呢? 答案是否定的.这也就带出了自动化的局限性.

Servlet浅谈(二)

1.forward(请求的转发)和redirect(重定向) 目的:都是为了把一个Servlet的功能,拆分到多个Servlet中,便于后续代码的维护. a.forward(请求转发) (1).如何在多个Servlet之间跳转 request.getRequestDispatcher("/url-pattern").forward(request,response). ps.路径只用填写web.xml中配置的sevlet路径即可 (2).request作用域传递数据 存数据: requ

浅谈二维线段树

一.定义 二维线段树,即用线段树维护一个矩阵 有两种实现方式: 1.原一维线段树的基础上,每一个节点都是一个线段树,代表第二维 下图是一个4*4矩阵 2.四分法转化为一维线段树 两种方法的空间复杂度都是n*n*log^2 第一种方法单次操作的时间复杂度是log^2,第二种方法最差可以退化到n 一维线段树的标记思想,在第一种方法中,可以用于二维线段树的第二维,不可以用于二维线段树的第一维 第二种方法本质上是四叉的一维线段树, 在此只介绍第一种方法 二.基本操作 1.单点修改+矩阵查询 单次访问一个

salesforce lightning零基础学习(九) Aura Js 浅谈二: Event篇

上一篇介绍了Aura Framework中 Component类的部分方法,本篇将要介绍Event常用的方法. 1. setParam (String key , Object value):设置事件的param,此项设置不会修改已经被触发的事件.我们在创建事件的时候可以同时声明attribute,在我们fire事件以前,可以对这些attribute设置值,其中key为attribute的name,value部分即为attribute的value. 2.setParams (Object con

浅谈二维线段树的几种不同的写法

目录 参考文献 参考文献 暴力写法 二叉树 四叉树 树套树写法1 参考文献 四叉树 树套树 以及和zhoufangyuan巨佬的激烈♂讨论 参考文献 大家好我口糊大师又回来了. 给你一个\(n*n\)矩阵,然后让你支持两种操作,对子矩阵加值和对子矩阵查和. 暴力写法 对于每一行开一个线段树,然后跑,时间复杂度\(n^2logn\). 优点: 代码较短 较为灵活 缺点: 常数大 容易卡 二叉树 我们对于平面如此处理,一层维护横切,一层竖切. 当然,这个做法也是\(n^2logn\)的,卡法就是任意