Tôi đang cố gắng sử dụng Apache/Jakarta HttpClient 4.1.1 để kết nối với một trang web tùy ý bằng các thông tin xác thực đã cho. Để kiểm tra điều này, tôi có một cài đặt tối thiểu của IIS 7.5 trên máy dev của tôi đang chạy, nơi chỉ có một chế độ xác thực được kích hoạt tại một thời điểm. Xác thực cơ bản hoạt động tốt, nhưng Digest và NTLM trở lại 401 thông báo lỗi bất cứ khi nào tôi cố gắng đăng nhập Đây là mã của tôi:.HttpClient 4.1.1 trả về 401 khi xác thực với NTLM, các trình duyệt hoạt động tốt
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpget = new HttpGet("http://localhost/");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY,
new NTCredentials("user", "password", "", "localhost"));
if (!new File(System.getenv("windir") + "\\krb5.ini").exists()) {
List<String> authtypes = new ArrayList<String>();
authtypes.add(AuthPolicy.NTLM);
authtypes.add(AuthPolicy.DIGEST);
authtypes.add(AuthPolicy.BASIC);
httpclient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF,
authtypes);
httpclient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF,
authtypes);
}
localContext.setAttribute(ClientContext.CREDS_PROVIDER, credsProvider);
HttpResponse response = httpclient.execute(httpget, localContext);
System.out.println("Response code: " + response.getStatusLine());
Một trong những điều tôi đã nhận thấy trong Fiddler là băm gửi bởi Firefox so với bằng HttpClient là khác nhau, làm cho tôi nghĩ rằng có lẽ IIS 7,5 đang mong đợi băm mạnh hơn HttpClient cung cấp? Bất kỳ ý tưởng? Nó sẽ là tuyệt vời nếu tôi có thể xác minh rằng điều này sẽ làm việc với NTLM. Tiêu hóa cũng sẽ tốt đẹp, nhưng tôi có thể sống mà không có điều đó nếu cần thiết.
Tôi nhận được xác thực Digest để hoạt động trong trình duyệt, nhưng nó vẫn hiển thị 401 bị cấm trong HttpClient. Tôi bối rối. – Jesse
Mã hoạt động đối với tôi, tuy nhiên mã này không còn được dùng nữa trong 4.3. Tôi không thể tìm thấy hướng dẫn rõ ràng để sử dụng mã 4.3 thuần túy. – Paul