Предположительно, я также решил эту проблему с пользовательской реализацией SSLFactory, но в соответствии с этим OkHttp docs решение намного проще.
Мое окончательное решение с необходимыми шифрами для 4.2+ устройства выглядят следующим образом:
public UsersApi provideUsersApi() {
private ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.COMPATIBLE_TLS)
.supportsTlsExtensions(true)
.tlsVersions(TlsVersion.TLS_1_2, TlsVersion.TLS_1_1, TlsVersion.TLS_1_0)
.cipherSuites(
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
CipherSuite.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
CipherSuite.TLS_ECDHE_RSA_WITH_RC4_128_SHA,
CipherSuite.TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
CipherSuite.TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
CipherSuite.TLS_DHE_RSA_WITH_AES_256_CBC_SHA)
.build();
OkHttpClient client = new OkHttpClient.Builder()
.connectionSpecs(Collections.singletonList(spec))
.build();
return new Retrofit.Builder()
.baseUrl(USERS_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
.create(UsersApi.class);
}
Обратите внимание, что набор поддерживаемых протоколов зависит от настроенного на вашем сервере.
Вы можете достичь этого, используя фрагмент тимелина и ajax.
в вашем html добавьте следующие коды.
$('.drop-down').on('change', function() {
var name = $('.drop-down option:selected').val();
$.ajax({
type: 'get',
url: /*[[ @{'/url'} ]]*/,
data: {name:name},
success: function(returnedData){
console.log(returnedData);
$('.details').html(returnedData);
},
error: function(xhr, exception) {
console.log(xhr);
alert("error");
}
});
});
<select class="form-control drop-down" th:field="*{itemId}" >
.....
</select>
<div class="details">
<div th:fragment="details">
<table>
......
......
<table>
<div>
<div>
и в вашем контроллере напишите код, как показано ниже.
@GetMapping("/url")
public ModelAndView getDetails(@RequestParam("name")String name){
ModelAndView mv = new ModelAndView("htmlpagename::details");
List<Item> itemDetails= repository.findByName(name);// your query result
mv.addObject("itemDetails",itemDetails);
return mv;
}
Надеюсь, это работает для вас.