0

我正在发出一个 HTTP 获取请求,它给了我一个 JSON 响应:

{ time : 1345111524000
  sub : Test vote
  msg :
  remain : 420
  cur_time : 1345113672856
  ver : 1.2.2
  p_type : 0
  .....

我正在使用适用于 Java 的 Google HTTP 客户端库

我的实现

static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
static final JsonFactory JSON_FACTORY = new JacksonFactory();

public static class PollInfo{
    @Key("time")
    public String time;

    @Key("sub")
    public String sub;

    @Key("msg")
    public String msg;

    .
    .
    }

    public static class PollInfoUrl extends GenericUrl{
       public PollInfoUrl(String encodedUrl) {
         super(encodedUrl);
       }
    }

    public PollInfo getPollInfo()  throws Exception{
     HttpRequestFactory requestFactory =HTTP_TRANSPORT.createRequestFactory(
                     new         HttpRequestInitializer() {
          @Override
          public void initialize(HttpRequest request) {
            request.setParser(new JsonObjectParser(JSON_FACTORY));
          }
    });
     PollInfoUrl url = new PollInfoUrl("http://**IP**:8000/web1/num1?cmd=en_poll_info&src=src_web&ver=default&deviceToken=DUMMYDEVICETOKEN&ref_id=83f2491d-0b0c-4d1c-8a14-053256cf157a&p_type=0&p_creator=Wp&eid=3&sender=Wp";);
     HttpRequest request = requestFactory.buildGetRequest(url);
     PollInfo pollInfo = request.execute().parseAs(PollInfo.class);
     return pollInfo;
}//getPollInfo();

我能够解析我的项目中的其他 URL,但对于这种特殊情况,它给了我例外,我需要一些指导来修复它。以下是我的服务器异常日志

[WARN] Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'com.fasterxml.jackson.core.JsonParseException' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = com.fasterxml.jackson.core.JsonParseException: Unexpected character ('Q' (code 81)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@481a98fe; line: 1, column: 2]
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:587)
    at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:605)
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:393)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:579)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    at hello.common.ui.gwt.server.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:50)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

请指导我哪里出错了。:) 提前致谢。

4

1 回答 1

0

您收到的 JSON 似乎无效。它缺少引号和逗号。

于 2014-11-07T11:20:28.270 回答