• HttpClient调用.net发布的带Windows NTML验证的webservice


    使用HttpClient调用:

    先要通过Windows NTML验证,然后才能调用 。

      1 class  WebServiceTest
      2 {
      3     
      4     /**
      5      * 获取接口数据
      6      * @param soapRequest
      7      * @return String
      8      */
      9     public String postSoapRequest(String soapRequest){
     10            CloseableHttpClient httpclient =  HttpClients.createDefault();
     11            //Windows NTLM验证
     12            CredentialsProvider credsProvider = new BasicCredentialsProvider();
     13            credsProvider.setCredentials(AuthScope.ANY,
     14                    new NTCredentials(InterfaceConstants.THE_USERNAME,
     15                            InterfaceConstants.THE_PASSWORD,
     16                            InterfaceConstants.THE_HOST, 
     17                            System.getenv("userdomain")));
     18            HttpHost target = new HttpHost(InterfaceConstants.THE_HOST, 80, "http");
     19            HttpClientContext context = HttpClientContext.create();
     20            context.setCredentialsProvider(credsProvider);
     21            HttpGet httpget = new HttpGet(InterfaceConstants.THE_URL);
     22            CloseableHttpResponse response1 = null;
     23            try {
     24                response1 = httpclient.execute(target, httpget, context);
     25            }catch(Exception e){
     26                e.printStackTrace();
     27            }finally {
     28                try {
     29                    response1.close();
     30                } catch (IOException e) {
     31                    e.printStackTrace();
     32                }
     33            }
     34            //使用相同的上下文,执行重量级的方法
     35            HttpPost httppost = new HttpPost(InterfaceConstants.THE_URL);
     36            HttpEntity re = new StringEntity(soapRequest, "utf-8");  
     37            httppost.setHeader("Content-Type","text/xml; charset=utf-8");
     38            httppost.setEntity(re);          
     39            CloseableHttpResponse response2 = null;
     40            String  result = null;//返回结果
     41            try {
     42                 response2 = httpclient.execute(target, httppost, context);
     43                 HttpEntity entity2 = response2.getEntity();
     44                 if (entity2 != null) {  
     45                    //响应内容  
     46                    result = EntityUtils.toString(entity2, "utf-8");  
     47                    System.out.println("isChunked:"+entity2.isChunked());
     48                 }  
     49            }catch(Exception e) {
     50                 e.printStackTrace();
     51            } finally {
     52                try {
     53                    response2.close();
     54                } catch (IOException e){
     55                    e.printStackTrace();
     56                }
     57            }
     58           return result;
     59     }
     60 
     61 
     62     @Test
     63     public void testHelloWorld()throws Exception {
     64         /*soap请求*/
     65         StringBuilder soapRequest = new StringBuilder("<?xml version="1.0" encoding="utf-8"?>")
     66                 .append("<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"")
     67                 .append(" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ")
     68                 .append(" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">")
     69                 .append(" <soap:Body>")
     70                 .append("  <HelloWorld xmlns="http://tempuri.org/"/>")
     71                 .append("  </soap:Body>")
     72                 .append("</soap:Envelope>");
     73         
     74         String res = postSoapRequest(soapRequest.toString());//调用
     75 
     76         /*处理返回的结果*/
     77         Document document = DocumentHelper.parseText(res);
     78         Element root = document.getRootElement();
     79         Element body = root.element("Body");
     80         Element responseEle = body.element("HelloWorldResponse");
     81         Element resultEle = responseEle.element("HelloWorldResult");
     82         System.out.println(resultEle.getData());    
     83     
     84     }
     85 }
     86 
     87 
     88 /**接口相关信息*/
     89 public interface InterfaceConstants {
     90     
     91     public static final String THE_URL = "http://xxxxxxxxervice.asmx";  
     92     /**
     93      * 用户名
     94      */
     95     public static final String THE_USERNAME = "xxxxx";
     96     /**
     97      * 加密后密码
     98      */
     99     public static final String THE_PASSWORD = "xxxxx";    
    100     /**
    101      * 接口host
    102      */
    103     public static final String THE_HOST= "xxxxxxxxxxxxx";
    104     /**
    105      * 接口地址
    106      */
    107     public static final String THE_URL="http://xxxxxxxxervice.asmx";
    108 
    109 }
  • 相关阅读:
    How to install VXDIAG Honda, Toyota and JLR SDD software
    16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17
    Cummins INSITE locked and ask for verification code
    How to use BMW Multi Tool 7.3 to replace lost key for BMW X1
    Bleed Brake Master Cylinder with Intelligent Tester IT2
    Porsche Piwis Tester II “No VCI has been detected”,how to do?
    Creader VIII VS. Creader VII+
    How to solve GM MDI cannot complete the installation
    汽车OBD2诊断程序开发 (原文转载,思路很清晰!)
    汽车节温器单片机开发思路
  • 原文地址:https://www.cnblogs.com/davidxu/p/5286317.html
Copyright © 2020-2023  润新知