如何解决与服务的连接失败?

时间:2019-02-10 13:00:47

标签: android

我想使用特定的URL来使用该服务...。我使用改造来获取它,但它给我与URL的错误连接...而该URL在chrome中处于活动状态。

在我编写的代码中

而是更正一个^ __ ^(此代码是APIClient类) 并确保我以正确的方式工作,我在mocky站点中使用相同的json文件构建了一个api ....,这是可行的 所以任何人都可以帮助我

public static final String BASE_URL = "http://111.222.1.12:0000/???/???/????/";

//database
public static final String BASE_URL2 = "http://www.mocky.io/v2/";

public static Boolean URL=true;
private static Retrofit retrofit = null;


public static Retrofit getClient(){
    if (retrofit==null) {
        if(URL)
        {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        else
        {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL2)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }

    }
    return retrofit;
}

1 个答案:

答案 0 :(得分:0)

您好,您可以尝试使用我的ApiClient,我使用的是rxJava,因此您需要根据需要重新设计APIClient

public class ApiClient {
private static Retrofit retrofit = null;
private static int REQUEST_TIMEOUT = 120;
private static OkHttpClient okHttpClient;


public static Retrofit getClient(Context context) {

    if (okHttpClient == null)
        initOkHttp(context);

    if (retrofit == null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(API_PATH)
                .client(okHttpClient)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

private static void initOkHttp(Context context) {
    ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
            .tlsVersions(TlsVersion.TLS_1_2)
            .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)
            .build();

    OkHttpClient.Builder httpClient = new OkHttpClient().newBuilder()
            .connectTimeout(REQUEST_TIMEOUT, TimeUnit.SECONDS)
            .readTimeout(REQUEST_TIMEOUT, TimeUnit.SECONDS)
            .writeTimeout(REQUEST_TIMEOUT, TimeUnit.SECONDS);

    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

    httpClient.addInterceptor(interceptor);

    httpClient.addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request original = chain.request();
            Request.Builder requestBuilder = original.newBuilder()
                    .addHeader("Accept", "application/json")
                    .addHeader("Request-Type", "Android")
                    .addHeader("Content-Type", "application/json");

            Request request = requestBuilder.build();
            return chain.proceed(request);
        }
    });


    okHttpClient = httpClient.build();
}

public static void resetApiClient() {
    retrofit = null;
    okHttpClient = null;
}
}

希望此参考资料可以帮助您解决问题