Java 使用清漆后的restlet时出错(反向代理)

Java 使用清漆后的restlet时出错(反向代理),java,android,json,restlet,varnish,Java,Android,Json,Restlet,Varnish,我使用的是restlet服务器,它为我的移动应用程序提供了一个RESTful提供者。为了让restlet正常工作,是否需要使用清漆 事实上,如果不使用varnish并使我的应用程序直接与我的rest服务器联系,一切都可以正常工作 这里是restlet服务器返回的异常: May 14, 2012 7:48:10 PM org.restlet.resource.UniformResource doCatch WARNING: Exception or error caught in resource

我使用的是restlet服务器,它为我的移动应用程序提供了一个RESTful提供者。为了让restlet正常工作,是否需要使用清漆

事实上,如果不使用varnish并使我的应用程序直接与我的rest服务器联系,一切都可以正常工作

这里是restlet服务器返回的异常:

May 14, 2012 7:48:10 PM org.restlet.resource.UniformResource doCatch
WARNING: Exception or error caught in resource
java.lang.NullPointerException
        at fr.evoxmusic.ebackupserver.rest.IsGoogleRegistered.isGoogleRegistered(IsGoogleRegistered.java:30)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java:449)
        at org.restlet.resource.ServerResource.post(ServerResource.java:1114)
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java:533)
        at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:590)
        at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:302)
        at org.restlet.resource.ServerResource.handle(ServerResource.java:849)
注意:我使用的是Reslet客户端。这里是我联系服务器的代码

public class RestletClient extends ClientResource {
    private static final String TAG = "RestletClient";
    private static final String UserAgent = "eBackupSMS";

    public static JSONObject SendHttpPost(String URL, JSONObject entity) {
        JSONObject result = new JSONObject();
        JsonRepresentation jr = new JsonRepresentation(entity);

        Client client = new Client(new Context(), Protocol.HTTP);
        client.getContext().getParameters().add("useForwardedForHeader", "true");
        ClientResource cr = new ClientResource(URL);
        cr.setNext(client);

        List<Preference<Encoding>> preflist = cr.getClientInfo().getAcceptedEncodings();
        preflist.add(new Preference<Encoding>(Encoding.GZIP));
        preflist.add(new Preference<Encoding>(Encoding.DEFLATE));

        cr.getClientInfo().setAgent(UserAgent);

        // Others params.
        cr.setRetryDelay(10000);
        cr.setRetryAttempts(3);
        cr.setRetryOnError(true);

        try {

            cr.post(jr);
            jr = new JsonRepresentation(cr.getResponseEntity());
            cr.release();

            result = jr.getJsonObject();
        } catch (Exception e) {
            Log.e(TAG, e.toString());
        }

        return result;
    }

}
第30行:

wrapper = entity.getJsonObject().getJSONObject("google");

谢谢。

通过使用socat,我发现varnish似乎没有正确地将分块http请求转发到后端

下面是防止在restlet中使用分块http请求的代码。ClientResource.setEntityBufferingtrue;
wrapper = entity.getJsonObject().getJSONObject("google");