Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpClient 4.1.1需要HTTP/1.1 401授权_Java_Jsp_Http Status Code 401_Apache Httpclient 4.x - Fatal编程技术网

Java HttpClient 4.1.1需要HTTP/1.1 401授权

Java HttpClient 4.1.1需要HTTP/1.1 401授权,java,jsp,http-status-code-401,apache-httpclient-4.x,Java,Jsp,Http Status Code 401,Apache Httpclient 4.x,我正在尝试打开此uri Updated Code:- Using SSL, still am getting the same error.. 这是我的proxi.jsp页面,当我传递我的凭证时,我得到了这个错误HTTP/1.1 401授权。为什么会发生这样的事。。该网站使用siteminder https://some-host/a/getmeta?id=10 (this url is passed to proxi.jsp page) 您正在访问一个安全站点,但我在您的HttpClie

我正在尝试打开此uri

Updated Code:- Using SSL, still am getting the same error..
这是我的proxi.jsp页面,当我传递我的凭证时,我得到了这个错误HTTP/1.1 401授权。为什么会发生这样的事。。该网站使用siteminder

https://some-host/a/getmeta?id=10  (this url is passed to proxi.jsp page)

您正在访问一个安全站点,但我在您的HttpClient代码中没有看到任何SSL处理。填补适当的空白后,您可以在独立客户端中查看并试用吗?

首先,从您发布的代码来看,您似乎没有将http客户端配置为使用HTTPS。 至少在org.apache.http.client.HttpClient中缺少如下代码:

您必须查看DefaultHttpClient的教程 在任何情况下,都可以使用wireshark之类的嗅探工具来查看发生了什么。
SSL握手是可见的,您将能够看到连接失败并了解原因。

除非您确定realm是该AuthScope构造函数中的正确值,否则我建议删除它或确定实际值应为多少。

更改以下行:new AuthScope AuthScope.ANY\u HOST,AuthScope.ANY_端口、领域

转到以下行:

SSLSocketFactory sf = new SSLSocketFactory(sslcontext); 
Scheme https = new Scheme("https", sf, 443);
httpclient.getConnectionManager().getSchemeRegistry().register(https);  

此链接中的SSL/TLS自定义部分:可能会有所帮助。因此,我如何使用wireshark实现此目的。。如果您有任何建议,我们将不胜感激。您的意思是什么?启动wireshark,开始捕获,在客户端和服务器的IP上进行过滤,并查看流量。但是您的问题已经是错误的。您在与客户端的连接中没有使用SSL,而且该站点需要siteminder身份验证。。所以这和我也那样做没有关系。。但我还是犯了同样的错误。。401需要授权。还有其他建议吗?你确定凭证是正确的吗?@laz,是的,它们是正确的..代码有问题吗..我有一个疑问。。如果我不想在jsp页面中使用用户名和密码。。那么有没有其他方法来传递凭证以登录到该页面。。。因为在jsp页面中传递用户名和密码不是最好的方式…对吗??任何人都可以打开该文件并查看用户名和密码??。让我知道另一个选项是什么…如果不知道您正试图实现什么,我只能说还有其他方法可以提供用户名和密码。您还将相当多的Java代码放入JSP,这可能很快变得难以维护。我尝试做的只是尝试使用我上面的JSP页面获取一个页面的内容,该页面需要身份验证。。所以在jsp页面中传递用户名和密码不是一个好方法,对吗。。??那么还有别的办法吗。。像是什么??因为任何人都可以通过打开该文件来查看用户名和密码。是每个最终用户的凭据还是应用程序的全局凭据?如果它们是应用程序的全局文件,我建议将它们提取到配置文件中,然后让应用程序加载该文件并使用它们。配置文件可以设置权限,以便只有Java服务器进程的所有者才能读取该文件以进行安全措施。这些权限是针对每个最终用户的。。它们不是全球性的。。因为我必须使用我的凭据登录。。这就是我担心的原因。。如果我的团队中有人可以打开该文件,那么他们可以看到该密码:
SSLSocketFactory sf = new SSLSocketFactory(sslcontext); 
Scheme https = new Scheme("https", sf, 443);
httpclient.getConnectionManager().getSchemeRegistry().register(https);  
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM)