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         String soapRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
 66                 +"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
 67                 +" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
 68                 +" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
 69                 +" <soap:Body>"
 70                 +"  <HelloWorld xmlns=\"http://tempuri.org/\"/>"
 71                 +"  </soap:Body>"
 72                 +"</soap:Envelope>";
 73
 74         String res = postSoapRequest(soapRequest);//调用
 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 }
时间: 2024-08-06 22:57:24

HttpClient调用.net发布的带Windows NTML验证的webservice的相关文章

C#调用Axis2发布的带SoapHeader用户验证的WebService

起因: 合作公司提供了一个WebService供我调用,为了保证安全性,要求在SoapHeader中带用户名和密码进行校验. 在获取了对方的WSDL文件后,并未在文件中指明SoapHeader的格式以及要传递的用户名.密码的属性名称.按照C#中调用WebService的常规方法,在测试工程中“添加Web引用”或“添加服务引用”,只看到生成的*.discomap 和 *.wsdl 两个文件,并未找到生成的 *.cs 类文件,但在测试代码中可以直接调用WebService,未要求身份校验的服务方法可

使用SoapUI测试windows身份验证的webservice

有个朋友问到用soapui测试wcf服务时如果使用windows身份验证要怎么传输凭据,于是自己试了一下.其实服务端是wcf还是webservice还是webapi都无所谓,关键是windows身份验证的凭据在哪里设置.手头上恰好有一个使用windows身份验证的站点,在浏览器上访问成功时,大约是这样子的页面: 然后在soapui里建一个工程访问一下,返回结果是这样的: 然而在凭证设置面板上并没有看到NTLM类型.找了一下资料,这贴帖子上已经有人回复了: https://stackoverflo

如何取消xendesktop7.x中发布出来的windows 7中的文件复选框

最近很多用户反映通过Citrix XenDekstop7.x的版本发布出来的windows7会默认开启文件复选框,如下图: 很多用户会感觉不习惯,当然关闭起来也很简单,打开Windows Exploer->工具->文件夹选项->取消勾选"使用复选框以选择项"即可! 很多用户又有了疑问:为何我的模板里没有勾选此项但是发布出来的VM默认勾选此项呢? 其实很简单这个主要是针对触屏设备访问而开启的,在安装VDA7.x后会默认改为Tablet PC模式 http://windo

微软仍计划在2017年发布两次Windows 10系统升级

微软本月重申,今年将发布两次Windows 10系统升级,这相当于2016年的两倍.但他们对公司的原定目标仍有顾虑. 在11天前澳大利亚举行的微软技术会议上项目管理主管比尔·卡拉古尼斯指出,后续升级将在"Creators Update"之后发布,此更新预计于下月完成并发货. 卡拉古尼斯在会议期间展示的幻灯片(会议于微软第9频道网站进行直播)包含了Creators之后的另一次升级.它缺少发布日期和除了"2017年第二次更新"以外的更详细名称.卡拉古尼斯对本年度的第二次

发布Qt带Widgets程序过程

发布Qt带Widgets程序过程 环境:Qt5.4.2,Qt Creator3.4.1,MinGW4.9 32bit 发布Qt程序过程如下 1.将要发布的程序在release版本下构建. 2.将要release版本下构建生成的exe,复制到一个文件夹下.本例中release生成RegisterLicence.exe,将该文件复制到E:\Qiao\JCGLPlatformRegisterLicence这个目录下. 3.打开Qt 5.4 for Desktop(MinGW4.9),如下图所示的位置.

java 通过httpclient调用https 的webapi

java如何通过httpclient 调用采用https方式的webapi?如何验证证书.示例:https://devdata.osisoft.com/p...需要通过httpclient调用该接口,没有做过https 方式的调用不知道怎么解决. java 通过httpclient调用https 的webapi >> csharp 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/csharp/1010000008927916/java通过httpclie

Visurl Studio发布网站到windows azure

Windows azure现在已经很成熟了,所以就对功能不多介绍了,今天就主要介绍通过visurl studio发布网站到windows azure上:我们大家都知道,通过visurl studio可以创建项目然后通过发布到iis下来实现功能访问,其实发布到iis下是最常见的做法,现在呢,由于公司购买了windows azure服务,想把本地的iis服务迁移到windows azure上运行,所以就通过在测试环境下部署,下面为操作的整个步骤,供参考学习. 我们首先是需要安装visurl stud

通过HttpClient 调用ASP.NET Web API

在前面两篇文章中我们介绍了ASP.NET Web API的基本知识和原理,并且通过简单的实例了解了它的基本(CRUD)操作.我们是通过JQuery和Ajax对Web API进行数据操作.这一篇我们来介绍一下使用HttpClient的方式来对Web API进行数据操作. 这里我们还是继续使用对Product的操作实例来演示一下它的基本应用. 创建ASP.NET Web API应用程序  在VS中选择创建一个ASP.NET Web Application应用程序,在向导的下一个窗口中选择Web AP

VS2013如何调用别人发布的WebService程序

这篇经验会告诉我们如何调用别人发布的WebService,并且需要注意的事项.现在就拿获取天气预报的接口举例,因为文中不允许有链接,所以在下文图中有WebService链接的地址. 工具/原料 VS2013 WebService接口 方法/步骤 首先打开VS2013,选择文件->新建->项目.   在项目中选择[控制台应用程序],将项目名称重新命名为[WebServiceTest].   点击项目右键,选择添加->服务引用.   在地址栏中输入WebServie链接地址后回车,然后重新命