我正在构建一个与使用基本身份验证的REST接口(interface)对话的Eclipse插件。身份验证失败时,我想弹出插件的设置对话框,然后重试。通常,我可以使用静态Authenticator.setDefault()
为此所有HttpURLConnection
设置一个身份 validator ,但是由于我正在编写插件,因此我不想覆盖Eclipse的默认Authenticator
(org.eclipse.ui.internal.net.auth
);
我考虑过在加载之前设置我的自定义Authenticator
,然后再将Eclipse的默认值放回去,但是我想这会导致多线程出现各种竞争问题,所以我很快就迷失了这个想法。
Google搜索产生的各种结果基本上告诉我这是不可能的:
Source
Source
有没有其他方法可以帮助我克服这个问题?
最佳答案
如果使用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());