我正在构建一个与使用基本身份验证的REST接口对话的Eclipse插件.当身份验证失败时,我想弹出我的插件的设置对话框并重试.通常我可以使用静态Authenticator.setDefault()
为所有人设置一个身份验证器HttpURLConnection
,但是因为我正在编写一个插件,所以我不想覆盖Eclipse的默认值Authenticator
(org.eclipse.ui.internal.net.auth
);
我想Authenticator
在加载之前设置我的自定义并在之后放回Eclipse的默认值,但我想这将导致多线程的种类问题,所以我很快就失去了这个概念.
Google搜索会产生各种结果,基本上告诉我这是不可能的:
Java URLConnection API应该有一个setAuthenticator(Authenticator)方法,以便在需要身份验证的多线程上下文中更容易地使用此类.
资源
如果应用程序包含很少的第三方插件,并且每个插件都使用自己的Authenticator,我们应该做什么?每次调用"Authenticator.setDefault()"方法都会重写以前定义的Authenticator ...
资源
是否有任何不同的方法可以帮助我克服这个问题?
如果无法使用HttpURLConnection,我建议使用Apache 的httpclient库.
一个简单的例子:
HttpClient client = new HttpClient(); client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("test","test")); GetMethod getMethod = new GetMethod("http://www.example.com/mylogin"); client.executeMethod(getMethod); System.out.println(getMethod.getResponseBodyAsString());