Добрый день!
Мы используем android-csp-5.0.40424 для создания Http-клиента с поддержкой ГОСТ TLS.
Https соединение устанавливается успешно для TLSv.1.0. Требуется обеспечить TLSv1.2.
В случае если на сервере убрать версию TLS 1.0 из разрешенных, возникает исключение при установке SSL соединения
2019-11-07 15:04:28.242 3368-3368/? I/StatusBar: onRankingUpdate
2019-11-07 15:04:28.300 3368-3368/? I/chatty: uid=1000(system) com.android.systemui identical 4 lines
2019-11-07 15:04:28.308 3368-3368/? I/StatusBar: onRankingUpdate
2019-11-07 15:04:28.361 32422-18527/? I/Icing: Indexing com.google.android.apps.docs-internal.3p:TextDigitalDocument from com.google.android.apps.docs
2019-11-07 15:04:28.373 32422-18527/? I/Icing: Indexing done com.google.android.apps.docs-internal.3p:TextDigitalDocument
2019-11-07 15:04:28.374 32422-18527/? I/Icing: Removing corpus key com.google.android.apps.docs-internal.3p:DigitalDocument for package com.google.android.apps.docs
2019-11-07 15:04:28.509 3368-3368/? D/StatusBar: updateNotificationRankingDelayed messageReceiveTime=130338213
2019-11-07 15:04:29.212 25965-26220/ru.abanking.plugins W/System.err: javax.net.ssl.SSLException: Received fatal alert: PROTOCOL_VERSION
2019-11-07 15:04:29.214 25965-26220/ru.abanking.plugins W/System.err: at ru.CryptoPro.ssl.android.cl_1.a(Unknown Source:31)
2019-11-07 15:04:29.215 25965-26220/ru.abanking.plugins W/System.err: at ru.CryptoPro.ssl.android.cl_1.a(Unknown Source:1)
2019-11-07 15:04:29.217 25965-26220/ru.abanking.plugins W/System.err: at ru.CryptoPro.ssl.android.cl_51.b(Unknown Source:188)
2019-11-07 15:04:29.218 25965-26220/ru.abanking.plugins W/System.err: at ru.CryptoPro.ssl.android.cl_51.a(Unknown Source:268)
2019-11-07 15:04:29.220 25965-26220/ru.abanking.plugins W/System.err: at ru.CryptoPro.ssl.android.cl_51.j(Unknown Source:48)
2019-11-07 15:04:29.221 25965-26220/ru.abanking.plugins W/System.err: at ru.CryptoPro.ssl.android.cl_51.startHandshake(Unknown Source:10)
2019-11-07 15:04:29.223 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192)
2019-11-07 15:04:29.224 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149)
2019-11-07 15:04:29.226 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
2019-11-07 15:04:29.227 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
2019-11-07 15:04:29.229 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
2019-11-07 15:04:29.231 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
2019-11-07 15:04:29.233 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
2019-11-07 15:04:29.234 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
2019-11-07 15:04:29.236 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
2019-11-07 15:04:29.236 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
2019-11-07 15:04:29.237 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
2019-11-07 15:04:29.237 25965-26220/ru.abanking.plugins W/System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(Unknown Source:0)
2019-11-07 15:04:29.238 25965-26220/ru.abanking.plugins W/System.err: at ru.abanking.cryptography.plugin.cordova.TlsGost.sendRequest(TlsGost.java:76)
2019-11-07 15:04:29.238 25965-26220/ru.abanking.plugins W/System.err: at ru.abanking.cryptography.plugin.cordova.TlsGost.tlsGet(TlsGost.java:31)
2019-11-07 15:04:29.239 25965-26220/ru.abanking.plugins W/System.err: at ru.abanking.cryptography.plugin.cordova.AbCordovaPluginCryptography.execute(AbCordovaPluginCryptography.java:84)
2019-11-07 15:04:29.239 25965-26220/ru.abanking.plugins W/System.err: at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
2019-11-07 15:04:29.240 25965-26220/ru.abanking.plugins W/System.err: at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
2019-11-07 15:04:29.240 25965-26220/ru.abanking.plugins W/System.err: at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59)
2019-11-07 15:04:29.241 25965-26220/ru.abanking.plugins W/System.err: at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
2019-11-07 15:04:29.241 25965-26220/ru.abanking.plugins W/System.err: at android.os.MessageQueue.nativePollOnce(Native Method)
2019-11-07 15:04:29.242 25965-26220/ru.abanking.plugins W/System.err: at android.os.MessageQueue.next(MessageQueue.java:325)
2019-11-07 15:04:29.242 25965-26220/ru.abanking.plugins W/System.err: at android.os.Looper.loop(Looper.java:148)
2019-11-07 15:04:29.243 25965-26220/ru.abanking.plugins W/System.err: at android.os.HandlerThread.run(HandlerThread.java:65)
2019-11-07 15:04:29.283 25965-26220/ru.abanking.plugins E/[AbCryptographyPlugin]: {"error":{"errorCode":"0","errorText":"Received fatal alert: PROTOCOL_VERSION","exception":"javax.net.ssl.SSLException"},"isSuccess":false}
2019-11-07 15:04:29.283 25965-26220/ru.abanking.plugins W/PluginManager: THREAD WARNING: exec() call to AbCordovaPluginCryptography.tls_get blocked the main thread for 9436ms. Plugin should use CordovaInterface.getThreadPool().
2019-11-07 15:04:29.283 25965-26220/ru.abanking.plugins W/CordovaPlugin: Attempted to send a second callback for ID: AbCordovaPluginCryptography1534739619
Result was: "Invalid action"
2019-11-07 15:04:30.177 32422-18527/? I/native: document-store.cc:1523 Scored 8838 usage reports, missing_corpora 0 update_failed 607
2019-11-07 15:04:30.482 32422-24268/? I/Icing: Indexing com.google.android.apps.docs-internal.3p:DigitalDocument from com.google.android.apps.docs
2019-11-07 15:04:30.502 32422-24268/? I/Icing: Indexing done com.google.android.apps.docs-internal.3p:DigitalDocument
2019-11-07 15:04:30.504 32422-24268/? I/Icing: Removing corpus key com.google.android.apps.docs-internal.3p:SpreadsheetDigitalDocument for package com.google.android.apps.docs
2019-11-07 15:04:32.260 32422-24268/? I/native: document-store.cc:1523 Scored 8838 usage reports, missing_corpora 0 update_failed 607
2019-11-07 15:04:32.555 32422-18527/? I/Icing: Indexing com.google.android.apps.docs-internal.3p:SpreadsheetDigitalDocument from com.google.android.apps.docs
2019-11-07 15:04:32.576 32422-18527/? I/Icing: Indexing done com.google.android.apps.docs-internal.3p:SpreadsheetDigitalDocument
2019-11-07 15:04:33.231 26354-26359/? I/zygote64: Do full code cache collection, code=116KB, data=73KB
2019-11-07 15:04:33.236 26354-26359/? I/zygote64: After code cache collection, code=98KB, data=49KB
В случае указания в настройках SSLContext протокола GostTLSv1.2 возникает другое исключение
2019-11-07 13:48:27.336 19332-19438/ru.abanking.plugins W/java.util.prefs: Could not create system preferences directory. System preferences are unusable.
2019-11-07 13:48:27.340 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getInt :: System Preference Node: /ru/CryptoPro/JCSP/params :: RSAProvType_class_default = 24
2019-11-07 13:48:27.346 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.get :: System Preference Node: /ru/CryptoPro/JCSP/params :: DefaultCSPProvider_2001_class_default = Crypto-Pro GOST R 34.10-2001 KC1 CSP
2019-11-07 13:48:27.347 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.get :: System Preference Node: /ru/CryptoPro/JCSP/params :: DefaultCSPProvider_2012_256_class_default = Crypto-Pro GOST R 34.10-2012 KC1 CSP
2019-11-07 13:48:27.348 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.get :: System Preference Node: /ru/CryptoPro/JCSP/params :: DefaultCSPProvider_2012_512_class_default = Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP
2019-11-07 13:48:27.349 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCSP.MSCAPI.cl_6.enumInstalledProviders :: Provider with type 24 not found.
2019-11-07 13:48:27.349 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.get :: System Preference Node: /ru/CryptoPro/JCSP/params :: DefaultCSPProvider_RSA_class_default =
2019-11-07 13:48:27.350 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getInt :: System Preference Node: /ru/CryptoPro/JCSP/params :: KeySet_class_default = 0
2019-11-07 13:48:27.351 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getInt :: System Preference Node: /ru/CryptoPro/JCSP/params :: NameType_class_default = 0
2019-11-07 13:48:27.352 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getBoolean :: System Preference Node: /ru/CryptoPro/JCSP/params :: add_provider_name_class_default = false
2019-11-07 13:48:27.495 19332-19438/ru.abanking.plugins I/cpcsp: <libssp>BOOL CryptGetProvParam(HCRYPTPROV, DWORD, BYTE *, DWORD *, DWORD)!failed: LastError = 0x103
2019-11-07 13:48:27.597 19332-19438/ru.abanking.plugins I/chatty: uid=12551(u0_a2551) JavaBridge identical 4 lines
2019-11-07 13:48:27.608 19332-19438/ru.abanking.plugins I/cpcsp: <libssp>BOOL CryptGetProvParam(HCRYPTPROV, DWORD, BYTE *, DWORD *, DWORD)!failed: LastError = 0x103
2019-11-07 13:48:27.760 19332-19438/ru.abanking.plugins I/[AbCryptographyPlugin]: Trust store resetting...
2019-11-07 13:48:27.769 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: DigestParamsSpec_class_default = null
2019-11-07 13:48:27.769 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: DigestParamsSpec_2012_256_class_default = null
2019-11-07 13:48:27.770 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: DigestParamsSpec_2012_512_class_default = null
2019-11-07 13:48:27.779 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: AlgIdSpec_class_default = null
2019-11-07 13:48:27.780 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: AlgIdSpec_class_defaultDH = null
2019-11-07 13:48:27.780 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: AlgIdSpec_2012_256_class_default = null
2019-11-07 13:48:27.781 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: AlgIdSpec_2012_256_dh_class_defaultDH = null
2019-11-07 13:48:27.781 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: AlgIdSpec_2012_512_class_default = null
2019-11-07 13:48:27.781 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: AlgIdSpec_2012_512_dh_class_defaultDH = null
2019-11-07 13:48:27.871 19332-19337/ru.abanking.plugins I/zygote64: Compiler allocated 5MB to compile void ru.CryptoPro.JCP.math.cl_0.a(int[], int[], int[], int[], int, long[])
2019-11-07 13:48:27.921 19332-19337/ru.abanking.plugins I/zygote64: Compiler allocated 5MB to compile void ru.CryptoPro.JCP.math.cl_0.a(int[], int[], int[], int, long[])
2019-11-07 13:48:28.189 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: EllipticParamsSpecDH_class_defaultDH = null
2019-11-07 13:48:28.189 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: EllipticParamsSpecDH_2012_256_class_defaultDH = null
2019-11-07 13:48:28.190 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: EllipticParamsSpec_class_defaultECC = null
2019-11-07 13:48:28.191 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: EllipticParamsSpec_2012_256_class_defaultECC = null
2019-11-07 13:48:28.207 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: CryptParamsSpec_class_default = null
2019-11-07 13:48:28.208 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: CryptParamsSpec_2012_256_class_default = null
2019-11-07 13:48:28.209 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getOID :: System Preference Node: /ru/CryptoPro/JCP/params :: CryptParamsSpec_2012_512_class_default = null
2019-11-07 13:48:28.211 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getBoolean :: System Preference Node: /ru/CryptoPro/JCP/tools/Control :: StrengthenedKeyUsageControl = false
2019-11-07 13:48:28.215 19332-19438/ru.abanking.plugins W/java.util.prefs: Couldn't create user preferences directory. User preferences are unusable.
2019-11-07 13:48:28.216 19332-19438/ru.abanking.plugins W/java.util.prefs: java.io.IOException: No such file or directory
2019-11-07 13:48:28.217 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.getBoolean :: User Preference Node: /ru/CryptoPro/JCP/Random :: CertifiedRandom_class_RequirePhysical = true
2019-11-07 13:48:28.224 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.get :: System Preference Node: /ru/CryptoPro/JCP/tools :: SelfTester_external_classNames = null
2019-11-07 13:48:28.298 19332-19438/ru.abanking.plugins I/JCP: ru.CryptoPro.JCP.pref.JCPPref.get :: System Preference Node: /ru/CryptoPro/JCP/tools :: UnixMutex_class_pathToLocks = /data/user/0/ru.abanking.plugins/cprocsp/tmp
2019-11-07 13:48:28.825 19332-19337/ru.abanking.plugins I/zygote64: Do full code cache collection, code=250KB, data=174KB
2019-11-07 13:48:28.826 19332-19337/ru.abanking.plugins I/zygote64: After code cache collection, code=191KB, data=124KB
2019-11-07 13:48:43.595 19332-19438/ru.abanking.plugins I/[AbCryptographyPlugin]: Trust store was reset
2019-11-07 13:48:43.596 19332-19438/ru.abanking.plugins I/[AbCryptographyPlugin]: Plugin entry.
Action: tls_get
Arguments: ["https:\/\/www.cryptopro.ru\/certsrv\/certcarc.asp",null]
2019-11-07 13:49:39.302 19332-19438/ru.abanking.plugins W/System.err: java.security.NoSuchAlgorithmException: no such algorithm: GostTLSv1.2 for provider JTLS
2019-11-07 13:49:39.308 19332-19438/ru.abanking.plugins W/System.err: at sun.security.jca.GetInstance.getService(GetInstance.java:87)
2019-11-07 13:49:39.311 19332-19438/ru.abanking.plugins W/System.err: at sun.security.jca.GetInstance.getInstance(GetInstance.java:206)
2019-11-07 13:49:39.312 19332-19438/ru.abanking.plugins W/System.err: at javax.net.ssl.SSLContext.getInstance(SSLContext.java:232)
2019-11-07 13:49:39.313 19332-19438/ru.abanking.plugins W/System.err: at ru.CryptoPro.ssl.android.util.TLSContext.initClientSSL(Unknown Source:63)
2019-11-07 13:49:39.314 19332-19438/ru.abanking.plugins W/System.err: at ru.abanking.cryptography.plugin.cordova.TlsGost.sendRequest(TlsGost.java:48)
2019-11-07 13:49:39.316 19332-19438/ru.abanking.plugins W/System.err: at ru.abanking.cryptography.plugin.cordova.TlsGost.tlsGet(TlsGost.java:31)
2019-11-07 13:49:39.317 19332-19438/ru.abanking.plugins W/System.err: at ru.abanking.cryptography.plugin.cordova.AbCordovaPluginCryptography.execute(AbCordovaPluginCryptography.java:84)
2019-11-07 13:49:39.319 19332-19438/ru.abanking.plugins W/System.err: at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
2019-11-07 13:49:39.322 19332-19438/ru.abanking.plugins W/System.err: at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
2019-11-07 13:49:39.324 19332-19438/ru.abanking.plugins W/System.err: at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59)
2019-11-07 13:49:39.325 19332-19438/ru.abanking.plugins W/System.err: at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
2019-11-07 13:49:39.329 19332-19438/ru.abanking.plugins W/System.err: at android.os.MessageQueue.nativePollOnce(Native Method)
2019-11-07 13:49:39.331 19332-19438/ru.abanking.plugins W/System.err: at android.os.MessageQueue.next(MessageQueue.java:325)
2019-11-07 13:49:39.332 19332-19438/ru.abanking.plugins W/System.err: at android.os.Looper.loop(Looper.java:148)
2019-11-07 13:49:39.334 19332-19438/ru.abanking.plugins W/System.err: at android.os.HandlerThread.run(HandlerThread.java:65)
2019-11-07 13:49:39.406 19332-19438/ru.abanking.plugins E/[AbCryptographyPlugin]: {"error":{"errorCode":"0","errorText":"no such algorithm: GostTLSv1.2 for provider JTLS","exception":"java.security.NoSuchAlgorithmException"},"isSuccess":false}
2019-11-07 13:49:39.406 19332-19438/ru.abanking.plugins W/PluginManager: THREAD WARNING: exec() call to AbCordovaPluginCryptography.tls_get blocked the main thread for 55810ms. Plugin should use CordovaInterface.getThreadPool().
2019-11-07 13:49:39.407 19332-19438/ru.abanking.plugins W/CordovaPlugin: Attempted to send a second callback for ID: AbCordovaPluginCryptography1087568370
Result was: "Invalid action"
код метода отправки запросов
private static OperationResult<Response> sendRequest(String urlPath, String requestMethod, Map<String, String> requestHeaders, String requestBody, Context context) throws Exception {
// Инициализация SSL контекста
SSLSocketFactory factory = ru.CryptoPro.ssl.android.util.TLSContext.initClientSSL(
null, // tlsProvider
"GostTLSv1.2", // tlsProtocol
null, // certProvider
null, // certStoreType
getTrustStorePath(context), // trustedStorePath
TRUST_STORE_PSWD, // trustedStorePassword
null // trustedManagers
);
// Создание подключения
URL url = new URL(urlPath);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod(requestMethod);
connection.setSSLSocketFactory(factory);
for (Map.Entry<String, String> header : requestHeaders.entrySet()) {
connection.setRequestProperty(header.getKey(), header.getValue());
}
if (requestMethod.equals("POST") || requestMethod.equals("PUT")) {
connection.setDoOutput(true);
if (requestBody != null) {
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.write(requestBody.getBytes());
}
}
connection.connect();
// Получение и вывод ответа
Response response = new Response();
response.status = connection.getResponseCode();
response.headers = connection.getHeaderFields();
BufferedReader bufferedReader = null;
try {
InputStreamReader inputStreamReader;
boolean isError = response.status >= 400;
if (!isError) {
inputStreamReader = new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8);
} else {
inputStreamReader = new InputStreamReader(connection.getErrorStream(), StandardCharsets.UTF_8);
}
bufferedReader = new BufferedReader(inputStreamReader);
String input;
StringBuilder responseBody = new StringBuilder();
while ((input = bufferedReader.readLine()) != null) {
System.out.println(input);
responseBody.append(input);
}
response.body = responseBody.toString();
if (isError) {
return OperationResult.error("Https request error", response);
}
return OperationResult.success(response);
} finally {
if (bufferedReader != null) {
bufferedReader.close();
}
connection.disconnect();
}
}