How to disable GZipContent in Cloud Endpoints builder in Android

前端 未结 3 774
迷失自我
迷失自我 2021-02-09 06:30

I want to disable GZipContent for a Google Cloud Endpoints class so that a POST can work on the local development server.

The latest GPE release generates this endpoint

3条回答
  •  孤城傲影
    2021-02-09 06:56

    I'm not 100% why Dan's answer didn't work for me, but this GitHub project's code solved it for me.

    /*
     * TODO: Need to change this to 'true' if you're running your backend locally using
     * the DevAppServer. See
     * http://developers.google.com/eclipse/docs/cloud_endpoints for more
     * information.
     */
    protected static final boolean LOCAL_ANDROID_RUN = false;
    
    /*
     * The root URL of where your DevAppServer is running (if you're running the
     * DevAppServer locally).
     */
    protected static final String LOCAL_APP_ENGINE_SERVER_URL = "http://localhost:8080/";
    
    /*
     * The root URL of where your DevAppServer is running when it's being
     * accessed via the Android emulator (if you're running the DevAppServer
     * locally). In this case, you're running behind Android's virtual router.
     * See
     * http://developer.android.com/tools/devices/emulator.html#networkaddresses
     * for more information.
     */
    protected static final String LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID = "http://10.0.2.2:8080";
    
    /**
     * Updates the Google client builder to connect the appropriate server based
     * on whether LOCAL_ANDROID_RUN is true or false.
     *
     * @param builder Google client builder
     * @return same Google client builder
     */
    public static  B updateBuilder(
            B builder) {
        if (LOCAL_ANDROID_RUN) {
            builder.setRootUrl(LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID
                    + "/_ah/api/");
        }
    
        // only enable GZip when connecting to remote server
        final boolean enableGZip = builder.getRootUrl().startsWith("https:");
    
        builder.setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
            public void initialize(AbstractGoogleClientRequest request)
                    throws IOException {
                if (!enableGZip) {
                    request.setDisableGZipContent(true);
                }
            }
        });
    
        return builder;
    }
    

提交回复
热议问题