java – 使用NTLM身份验证使用soap服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用NTLM身份验证使用soap服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2414字,纯文字阅读大概需要4分钟。
内容图文
![java – 使用NTLM身份验证使用soap服务](/upload/InfoBanner/zyjiaocheng/767/f4ba656682814b0d9d5fd9f006cd86a9.jpg)
我试图通过创建NTLM引擎(遵循http://hc.apache.org/httpcomponents-client-4.3.x/ntlm.html上的说明)来使用NTLM身份验证来使用SOAP服务,实现了AuthSchemeFactory并最终将AuthSchemeFactory注册到我的HTTP客户端.当我使用我的HTTP客户端点击服务时,我得到一个响应:“状态代码 – 415,消息 – 服务器无法为请求提供服务,因为媒体类型不受支持.”
任何人都可以告诉我如何解决这个不受支持的媒体问题,以便在Java平台上使用受NTLM保护的SOAP Web服务.使用JCIFS是一个正确的选项来约束NTLM受保护的服务,还是有更好的方法.提前致谢.
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getAuthSchemes().register(AuthSchemes.NTLM,
new JCIFSNTLMSchemeFactory());
CredentialsProvider credsProvider = new BasicCredentialsProvider();
NTCredentials ntcred = new NTCredentials("USERNAME", "PASSWORD",
"HOST", "DOMAIN");
credsProvider.setCredentials(new AuthScope("HOST", 443,
AuthScope.ANY_REALM, "NTLM"), ntcred);
httpclient.setCredentialsProvider(credsProvider);
httpclient.getParams().setParameter(
CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");
Writer writer = new StringWriter();
writer.write("MY SOAP REQUEST BODY");
HttpPost httppost = new HttpPost(
"https://<HOST_NAME>/XiPay30WS.asmx");
httppost.setEntity(new StringEntity(writer.toString()));
httppost.setHeader("Content-Type",
"application/x-www-form-urlencoded");
HttpResponse httpresponse = httpclient.execute(
new HttpHost("HOST", 443, "https"),
httppost, new BasicHttpContext());
String statusCode = httpresponse.getStatusCode();
解决方法:
使用带有FLASK的NTLM Auth实现python实现.
如果你想使用java,运行下面的独立烧瓶代码并通过http请求从java代码调用url(例如POST request / dora / httpWithNTLM)
from flask import Flask, render_template, flash, request, url_for, redirect, session , Response
import requests,sys,json
from requests_ntlm import HttpNtlmAuth
app = Flask(__name__)
@app.route("/dora/httpWithNTLM",methods=['POST'])
def invokeHTTPReqWithNTLM():
url =""
reqData = json.loads(request.data)
reqxml=request.data
headers = {}
headers["SOAPAction"] = "";
headers["Content-Type"] = "text/xml"
headers["Accept"] = "text/xml"
print("req headers "+str(request.headers))
r = requests.Request("POST",url,auth=HttpNtlmAuth('domain\\username','password'), data=reqxml, headers=headers)
prepared = r.prepare()
s = requests.Session()
resp = s.send(prepared)
print (resp.status_code)
return Response(resp.text.replace("<","<").replace(">",">"),resp.status_code)
if __name__ == '__main__':
app.run(host="0.0.0.0",port=5001)
内容总结
以上是互联网集市为您收集整理的java – 使用NTLM身份验证使用soap服务全部内容,希望文章能够帮你解决java – 使用NTLM身份验证使用soap服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。