В IIS 7 мы успешно используем токен с помощью нашего приложения, но при обновлении сервера приложений с IIS 7 до IIS 8 возникает следующая ошибка с сервера приложений ....
Ответ {протокол = http / 1.1, код = 404, сообщение = не найдено, URL = https://sub.domain.com}
Наш класс дооснащения 2 Singleton в следующем
public class RetrofitSingleton {
public static final String BASE_URL = "https://sub.domain.com";
private static Retrofit retrofit = null;
private static Context sContext;
private static Retrofit sRetrofit;
public RetrofitSingleton() {
}
public synchronized static Retrofit getInstance(Context context) {
sContext=context;
if(sRetrofit==null){
createRetrofit();
}
return sRetrofit;
}
private static void createRetrofit(){
TrustManagerFactory trustManagerFactory = null;
try {
trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
trustManagerFactory.init((KeyStore) null);
} catch (KeyStoreException e) {
e.printStackTrace();
}
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
}
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
SSLContext sslContext = null;
try {
sslContext = SSLContext.getInstance("SSL");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
sslContext.init(null, new TrustManager[] { trustManager }, null);
} catch (KeyManagementException e) {
e.printStackTrace();
}
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient okHttpClient= null;
okHttpClient = new OkHttpClient.Builder()
.sslSocketFactory(new TLSSocketFactory(),trustManager)
.connectTimeout(2, TimeUnit.MINUTES)
.readTimeout(2, TimeUnit.MINUTES)
.writeTimeout(2, TimeUnit.MINUTES)
//.sslSocketFactory(sslSocketFactory, trustManager)
.followRedirects(false)
.followSslRedirects(false)
.retryOnConnectionFailure(false)
.cache(null)//new Cache(sContext.getCacheDir(),10*1024*1024)
.build();
sRetrofit= new Retrofit.Builder()
.client(okHttpClient)
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
Следуя нашему обновленному интерфейсу 2 API
@FormUrlEncoded
@POST("/Api/Token")
Call<TokenInfo> getTokenAccess(@Field("grant_type") String grantType);
Мы не можем понять, что требуется изменить make-код конфигурации / кода в связи с обновлением IIS 7 до IIS 8. Любое предложение очень ценится.
Заранее спасибо.
Примечание:
1. Using Postman we get token from our Asp.net Web api but from our android
app we cannot get token using retrofit 2.
2. In IIS 7, our application & app works successfully.