0

Androidのhttps経由でRESTfulWCFサービスを呼び出そうとしています。電話をかけるたびに401:不正なエラーが発生し続けます。私のコードの他の部分は機能し、ローカルでテストしました。

関連するコードは次のとおりです。

// http scheme
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
// https scheme
schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));

credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
            new UsernamePasswordCredentials("user", "pass"));
clientConnectionManager = new ThreadSafeClientConnManager(params, schemeRegistry);

context = new BasicHttpContext();
context.setAttribute("http.auth.credentials-provider", credentialsProvider);

HttpGet request = new HttpGet(SERVICE_URI + URL1 + EID);
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");

DefaultHttpClient client = new DefaultHttpClient(clientConnectionManager, params);
client.setCredentialsProvider(credentialsProvider);
HttpResponse response = client.execute(request, context);

HttpEntity responseEntity = response.getEntity();

EasySSLSocketFactoryは、X509TrustManagerの実装を使用します。私はコードも同様に機能することを知っています。誰かアドバイスをお願いできますか?私が見つけたものは何も正しく機能しません。

4

1 に答える 1

0

結局のところ、HttpClientはそのままではNTLM認証をサポートしていません(Windows認証でIISを使用している場合)。このリンクは私に必要なすべてを与えてくれました。コピーして貼り付けるだけで、忘れてしまいます。

http://hc.apache.org/httpcomponents-client-ga/ntlm.html

于 2012-04-18T18:03:34.757 に答える