Search in sources :

Example 36 with Header

use of retrofit2.http.Header in project Awesome-WanAndroid by JsonChao.

the class HttpModule method provideClient.

@Singleton
@Provides
OkHttpClient provideClient(OkHttpClient.Builder builder) {
    if (BuildConfig.DEBUG) {
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
        builder.addInterceptor(loggingInterceptor);
    }
    File cacheFile = new File(Constants.PATH_CACHE);
    Cache cache = new Cache(cacheFile, 1024 * 1024 * 50);
    Interceptor cacheInterceptor = chain -> {
        Request request = chain.request();
        if (!CommonUtils.isNetworkConnected()) {
            request = request.newBuilder().cacheControl(CacheControl.FORCE_CACHE).build();
        }
        Response response = chain.proceed(request);
        if (CommonUtils.isNetworkConnected()) {
            int maxAge = 0;
            // 有网络时, 不缓存, 最大保存时长为0
            response.newBuilder().header("Cache-Control", "public, max-age=" + maxAge).removeHeader("Pragma").build();
        } else {
            // 无网络时,设置超时为4周
            int maxStale = 60 * 60 * 24 * 28;
            response.newBuilder().header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale).removeHeader("Pragma").build();
        }
        return response;
    };
    // 设置缓存
    builder.addNetworkInterceptor(cacheInterceptor);
    builder.addInterceptor(cacheInterceptor);
    builder.cache(cache);
    // 设置超时
    builder.connectTimeout(10, TimeUnit.SECONDS);
    builder.readTimeout(20, TimeUnit.SECONDS);
    builder.writeTimeout(20, TimeUnit.SECONDS);
    // 错误重连
    builder.retryOnConnectionFailure(true);
    // cookie认证
    builder.cookieJar(new CookiesManager());
    return builder.build();
}
Also used : Interceptor(okhttp3.Interceptor) Request(okhttp3.Request) Cache(okhttp3.Cache) GeeksApis(json.chao.com.wanandroid.core.http.api.GeeksApis) CacheControl(okhttp3.CacheControl) Singleton(javax.inject.Singleton) File(java.io.File) WanAndroidUrl(json.chao.com.wanandroid.di.qualifier.WanAndroidUrl) Retrofit(retrofit2.Retrofit) RxJava2CallAdapterFactory(retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory) CommonUtils(json.chao.com.wanandroid.utils.CommonUtils) TimeUnit(java.util.concurrent.TimeUnit) Constants(json.chao.com.wanandroid.app.Constants) Module(dagger.Module) OkHttpClient(okhttp3.OkHttpClient) HttpLoggingInterceptor(okhttp3.logging.HttpLoggingInterceptor) BuildConfig(json.chao.com.wanandroid.BuildConfig) GsonConverterFactory(retrofit2.converter.gson.GsonConverterFactory) Response(okhttp3.Response) CookiesManager(json.chao.com.wanandroid.core.http.cookies.CookiesManager) Provides(dagger.Provides) Response(okhttp3.Response) Request(okhttp3.Request) File(java.io.File) Interceptor(okhttp3.Interceptor) HttpLoggingInterceptor(okhttp3.logging.HttpLoggingInterceptor) HttpLoggingInterceptor(okhttp3.logging.HttpLoggingInterceptor) Cache(okhttp3.Cache) CookiesManager(json.chao.com.wanandroid.core.http.cookies.CookiesManager) Singleton(javax.inject.Singleton) Provides(dagger.Provides)

Example 37 with Header

use of retrofit2.http.Header in project android-diplicity by zond.

the class RetrofitActivity method onActivityResult.

@Override
protected void onActivityResult(final int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == LOGIN_REQUEST) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result != null) {
            if (result.isSuccess()) {
                final GoogleSignInAccount acct = result.getSignInAccount();
                Observable.create(new Observable.OnSubscribe<String>() {

                    @Override
                    public void call(final Subscriber<? super String> subscriber) {
                        Response response = null;
                        try {
                            String url = getBaseURL() + "Auth/OAuth2Callback?code=" + URLEncoder.encode(acct.getServerAuthCode(), "UTF-8") + "&approve-redirect=true&state=" + URLEncoder.encode("https://android-diplicity", "UTF-8");
                            Request request = new Request.Builder().url(url).build();
                            response = new OkHttpClient.Builder().followRedirects(false).followSslRedirects(false).connectTimeout(10, TimeUnit.SECONDS).readTimeout(10, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS).build().newCall(request).execute();
                            if (response.code() != 307) {
                                throw new RuntimeException("Unsuccessful response " + response.body().string());
                            }
                            url = response.headers().get("Location");
                            if (url == null) {
                                throw new RuntimeException("No Location header in response " + response.body().string());
                            }
                            Uri parsedURI = Uri.parse(url);
                            if (parsedURI == null) {
                                throw new RuntimeException("Unparseable Location header " + url + " in response");
                            }
                            subscriber.onNext(parsedURI.getQueryParameter("token"));
                            subscriber.onCompleted();
                        } catch (RuntimeException e) {
                            throw e;
                        } catch (Exception e) {
                            throw new RuntimeException(e);
                        }
                    }
                }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<String>() {

                    @Override
                    public void onCompleted() {
                    }

                    @Override
                    public void onError(Throwable e) {
                        App.firebaseCrashReport("Unable to log in", e);
                        Toast.makeText(RetrofitActivity.this, R.string.login_failed, Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onNext(String token) {
                        PreferenceManager.getDefaultSharedPreferences(RetrofitActivity.this).edit().putString(AUTH_TOKEN_PREF_KEY, token).apply();
                        performLogin();
                    }
                });
            } else {
                App.firebaseCrashReport("Login failed: " + result.getStatus().getStatus());
                Toast.makeText(this, R.string.login_failed, Toast.LENGTH_SHORT).show();
            }
        } else {
            App.firebaseCrashReport("Login failed, null result");
            Toast.makeText(this, R.string.login_failed, Toast.LENGTH_SHORT).show();
        }
    }
}
Also used : OkHttpClient(okhttp3.OkHttpClient) GsonBuilder(com.google.gson.GsonBuilder) Request(okhttp3.Request) Uri(android.net.Uri) GoogleSignInResult(com.google.android.gms.auth.api.signin.GoogleSignInResult) HttpException(retrofit2.adapter.rxjava.HttpException) JsonSyntaxException(com.google.gson.JsonSyntaxException) IOException(java.io.IOException) Response(okhttp3.Response) GoogleSignInAccount(com.google.android.gms.auth.api.signin.GoogleSignInAccount) Subscriber(rx.Subscriber)

Example 38 with Header

use of retrofit2.http.Header in project autorest.java by Azure.

the class HeadersImpl method paramDatetimeRfc1123WithServiceResponseAsync.

/**
 * Send a post request with header values "scenario": "valid", "value": "Wed, 01 Jan 2010 12:34:56 GMT" or "scenario": "min", "value": "Mon, 01 Jan 0001 00:00:00 GMT".
 *
 * @param scenario Send a post request with header values "scenario": "valid" or "min"
 * @throws IllegalArgumentException thrown if parameters fail the validation
 * @return the {@link ServiceResponse} object if successful.
 */
public Observable<ServiceResponse<Void>> paramDatetimeRfc1123WithServiceResponseAsync(String scenario) {
    if (scenario == null) {
        throw new IllegalArgumentException("Parameter scenario is required and cannot be null.");
    }
    final DateTime value = null;
    DateTimeRfc1123 valueConverted = null;
    if (value != null) {
        valueConverted = new DateTimeRfc1123(value);
    }
    return service.paramDatetimeRfc1123(scenario, valueConverted).flatMap(new Func1<Response<ResponseBody>, Observable<ServiceResponse<Void>>>() {

        @Override
        public Observable<ServiceResponse<Void>> call(Response<ResponseBody> response) {
            try {
                ServiceResponse<Void> clientResponse = paramDatetimeRfc1123Delegate(response);
                return Observable.just(clientResponse);
            } catch (Throwable t) {
                return Observable.error(t);
            }
        }
    });
}
Also used : Response(retrofit2.Response) ServiceResponse(com.microsoft.rest.ServiceResponse) ServiceResponse(com.microsoft.rest.ServiceResponse) DateTimeRfc1123(com.microsoft.rest.DateTimeRfc1123) DateTime(org.joda.time.DateTime) Observable(rx.Observable) ResponseBody(okhttp3.ResponseBody)

Example 39 with Header

use of retrofit2.http.Header in project autorest.java by Azure.

the class LRORetrysImpl method putAsyncRelativeRetrySucceededWithServiceResponseAsync.

/**
 * Long running put request, service returns a 500, then a 200 to the initial request, with an entity that contains ProvisioningState=’Creating’. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
 *
 * @throws IllegalArgumentException thrown if parameters fail the validation
 * @return the observable for the request
 */
public Observable<ServiceResponseWithHeaders<Product, LRORetrysPutAsyncRelativeRetrySucceededHeaders>> putAsyncRelativeRetrySucceededWithServiceResponseAsync() {
    final Product product = null;
    Observable<Response<ResponseBody>> observable = service.putAsyncRelativeRetrySucceeded(product, this.client.acceptLanguage(), this.client.userAgent());
    return client.getAzureClient().getPutOrPatchResultWithHeadersAsync(observable, new TypeToken<Product>() {
    }.getType(), LRORetrysPutAsyncRelativeRetrySucceededHeaders.class);
}
Also used : Response(retrofit2.Response) ServiceResponse(com.microsoft.rest.ServiceResponse) TypeToken(com.google.common.reflect.TypeToken) Product(fixtures.lro.models.Product)

Example 40 with Header

use of retrofit2.http.Header in project autorest.java by Azure.

the class LRORetrysImpl method postAsyncRelativeRetrySucceededWithServiceResponseAsync.

/**
 * Long running post request, service returns a 500, then a 202 to the initial request, with an entity that contains ProvisioningState=’Creating’. Poll the endpoint indicated in the Azure-AsyncOperation header for operation status.
 *
 * @throws IllegalArgumentException thrown if parameters fail the validation
 * @return the observable for the request
 */
public Observable<ServiceResponseWithHeaders<Void, LRORetrysPostAsyncRelativeRetrySucceededHeaders>> postAsyncRelativeRetrySucceededWithServiceResponseAsync() {
    final Product product = null;
    Observable<Response<ResponseBody>> observable = service.postAsyncRelativeRetrySucceeded(product, this.client.acceptLanguage(), this.client.userAgent());
    return client.getAzureClient().getPostOrDeleteResultWithHeadersAsync(observable, new TypeToken<Void>() {
    }.getType(), LRORetrysPostAsyncRelativeRetrySucceededHeaders.class);
}
Also used : Response(retrofit2.Response) ServiceResponse(com.microsoft.rest.ServiceResponse) TypeToken(com.google.common.reflect.TypeToken) Product(fixtures.lro.models.Product)

Aggregations

Response (retrofit2.Response)39 ServiceResponse (com.microsoft.rest.ServiceResponse)30 TypeToken (com.google.common.reflect.TypeToken)29 Product (fixtures.lro.models.Product)29 Request (okhttp3.Request)23 Retrofit (retrofit2.Retrofit)21 OkHttpClient (okhttp3.OkHttpClient)19 IOException (java.io.IOException)15 Test (org.junit.Test)14 SubProduct (fixtures.lro.models.SubProduct)12 Interceptor (okhttp3.Interceptor)12 Response (okhttp3.Response)10 ResponseBody (okhttp3.ResponseBody)9 Header (retrofit2.http.Header)6 ArrayList (java.util.ArrayList)4 HttpLoggingInterceptor (okhttp3.logging.HttpLoggingInterceptor)4 GsonBuilder (com.google.gson.GsonBuilder)3 HttpException (retrofit2.HttpException)3 Context (android.content.Context)2 Nullable (android.support.annotation.Nullable)2