Мы пытаемся отправить несколько запросов к целевому серверу в одном HttpClient (один сеанс). Целевой сервер сначала аутентифицирует все запросы с помощью дайджест-аутентификации (на основе MD5-sess). Результат показывает, что только первый доступ успешен. Следующие обращения отклоняются сервером, потому что сервер обрабатывает последующие обращения как повторную атаку, поскольку значение «nc» всегда равно «00000001».
Похоже, что Android HttpClient жестко закодирован заголовок авторизации дайджеста от nb до 00000001?
Есть ли способ для клиента увеличить это значение при отправке нового запроса? Спасибо.
открытый класс HttpService {
private static final HttpService instance = new HttpService();
private HttpService() {
client = getHttpClient();
}
public static HttpService getInstance() {
return instance;
}
private DefaultHttpClient getHttpClient() {
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setStaleCheckingEnabled(params, false);
HttpConnectionParams.setConnectionTimeout(params, 15 * 1000);
HttpConnectionParams.setSoTimeout(params, 15 * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192);
HttpProtocolParams.setUserAgent(params, USER_AGENT);
SchemeRegistry schemeRegistry = new SchemeRegistry();
Scheme httpScheme = new Scheme("http", PlainSocketFactory.getSocketFactory(), 80);
Scheme httpsScheme = new Scheme("https", SSLCertificateSocketFactory.getHttpSocketFactory(30 * 1000, null), 443);
schemeRegistry.register(httpScheme);
schemeRegistry.register(httpsScheme);
ClientConnectionManager manager = new ThreadSafeClientConnManager(params, schemeRegistry);
//create client
DefaultHttpClient httpClient = new DefaultHttpClient(manager, params);
httpClient.getCredentialsProvider().setCredentials(new AuthScope(address, port),
new UsernamePasswordCredentials(username, password));
}
}