java 调用webService接口

  由于项目中使用webService接口,因此学习了下如何调用webService接口。

一、使用httpClient调用webService接口:

    public static String executeWebService(String urls,String soapXml) throws IOException {
            //设置url,不是WSDL地址
            //URL url = new URL("http://127.0.0.1:8080/Service/ServiceHello");
            URL url = new URL(urls);
            //通过url获取连接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

             //设置请求类型:POST请求
            connection.setRequestMethod("POST");
            //设置数据格式,我这里是xml类型
            connection.setRequestProperty("content-type", "text/xml;charset=utf-8");
            connection.setDoInput(true);
            connection.setDoOutput(true);

             //设置连接超时
            connection.setConnectTimeout(3000);
            //第四步:组织SOAP数据,发送请求
            OutputStream os = connection.getOutputStream();
            os.write(soapXml.getBytes());
            //获取响应信息
            int responseCode = connection.getResponseCode();
            //检查是否请求成功,判断是否响应成功
            if(HttpURLConnection.HTTP_OK == responseCode){//
                InputStream is = connection.getInputStream();
                InputStreamReader inputStream= new InputStreamReader(is);
                BufferedReader buffered= new BufferedReader(isr);
                StringBuilder stringBuilder= new StringBuilder();
                String result= null;
                while(null != (result= buffered.readLine())){
                    stringBuilder.append(result);
                }
                is.close();
                inputStream.close();
                buffered.close();
                //返回结果xml字符串
                return sb.toString();
            }
            os.close();
            return null;
    }

二、使用另一种httpClient:

    public static String execute(String uri,String requestXml) throws Exception {
        long startTime = System.currentTimeMillis();
         PoolingHttpClientConnectionManager cm = null;
        
         CloseableHttpClient httpClient = null;
        HttpEntity httpEntity = null;
        HttpRequestBase request = null;
        String responseBody = "";
        cm = new PoolingHttpClientConnectionManager();
        //路由最大连接数
        cm.setDefaultMaxPerRoute(2);
        //总最大连接
        cm.setMaxTotal(2);
        //得到连接池
        httpClient = HttpClients.custom().build();
        
       // HashMap<String, String> headers = new HashMap<String, String>();  
        request=new HttpPost(uri);
        //request.addHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.6) Gecko/20100625Firefox/3.6.6 Greatwqs");  
        //request.addHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
        //请求头:接受语言环境
       // request.addHeader("Accept-Language","zh-cn,zh;q=0.5");  
        //请求头:保持连接
       // request.addHeader("connection", "close");
        //request.addHeader("connection", "Keep-Alive");
        //request.addHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        CloseableHttpResponse httpResponse;
        //TODO强制转换成POST设置请求 参数
       // String st=new String(requestXml.getBytes("iso8859-1"),"utf-8");
        HttpPost  post=(HttpPost)request;
        //构建消息实体
        
        StringEntity entity=new StringEntity(requestXml,"utf-8");
        //entity.setContentEncoding("utf-8");
        //entity.setContentType("application/xml");
        //设置请求头
        post.addHeader("Content-type", "text/xml");
        //ByteArrayEntity entity = new ByteArrayEntity(requestXml.getBytes("utf-8"));
        //设置请求实体
        post.setEntity(entity);
        try {
            httpResponse = httpClient.execute(post);
            httpEntity = httpResponse.getEntity();
            if (httpEntity != null) {
                responseBody = EntityUtils.toString(httpEntity);
            }
        } catch (Exception e) {
            e.printStackTrace();
            if(request != null){
                request.abort();
            }
            throw new Exception("请求异常:"+e.getMessage());
        } finally {
            if (httpEntity != null) {
                try {
                    EntityUtils.consumeQuietly(httpEntity);
                } catch (Exception e) {
                    throw new Exception("请求异常:"+e.getMessage());
                }
            }
        }
        return null;
    }

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页