2015-01-13 2 views
0

Google Cloud Endpoints에서 구현 한 코드 [1] 및 코드 (2 번 코드를 복사 한 org.json을 사용할 수 없기 때문에)를 구현했습니다. ,하지만 요청을 구문 분석 할 때 [ "icon"] 필드의 JSON 예외가 발생하면 오류가 발생합니다.오류 Foursquare API에서 JSON 구문 분석 요청 Google Cloud Endpoints에서 실행되는 Java

내 코드 [1] https://code.google.com/p/foursquare-api-java/ [2] 다음은

https://github.com/douglascrockford/JSON-java입니다 : 여기

@ApiMethod(name = "searchVenues") 
public List<Api> searchVenues(@Named("ll")String ll) throws FoursquareApiException, CiudadAppoyoApiException { 


    //ll="6.5589393,-73.1290595"; 

    List<Api> venuesList = new ArrayList<Api>(); 

    // First we need a initialize FoursquareApi. 
     FoursquareApi foursquareApi = new FoursquareApi("Client ID", "Client Secret", "Callback URL"); 
     Result<VenuesSearchResult> result = foursquareApi.venuesSearch(ll, null, null, null, null, null, null, null, null, null, null, null, null); 

     if (result.getMeta().getCode() == 200) { 

      // if query was ok we can finally we do something with the data 

      for (CompactVenue venue : result.getResult().getVenues()){ 
       Api venuesObj = new Api(); 
       System.out.println(venue.getName()); 
       venuesObj.setVenue(venue); 
       venuesObj.setFoursquareId(Long.getLong(venue.getId())); 
       venuesList.add(venuesObj); 
      } 

      return venuesList; 
     } else { 
      if (result.getMeta().getCode() == 400) throw new CiudadAppoyoApiException("Request no valido"); 
      if (result.getMeta().getCode() == 404) throw new CiudadAppoyoApiException("Ningún resultado"); 
      if (result.getMeta().getCode() == 500) throw new CiudadAppoyoApiException("Error en el servidor"); 
      return venuesList; 
     } 

} 

가 로그

Jan 13, 2015 8:55:34 AM com.google.api.server.spi.SystemServiceServlet init 
INFO: SPI restricted: true 
Jan 13, 2015 8:55:37 AM com.google.api.server.spi.SystemService invokeServiceMethod 
INFO: cause={0} 
fi.foyt.foursquare.api.FoursquareApiException: org.json.JSONException: JSONObject["icon"] not a string. 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:140) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseValue(JSONFieldParser.java:191) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:138) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntities(JSONFieldParser.java:57) 
    at fi.foyt.foursquare.api.FoursquareApi.venuesSearch(FoursquareApi.java:939) 
    at com.jiacp.ciudadappoyo.backend.foursquare.apiEndpoint.searchVenues(apiEndpoint.java:87) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:359) 
    at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:160) 
    at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:118) 
    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:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:127) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:491) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Caused by: org.json.JSONException: JSONObject["icon"] not a string. 
    at org.json.JSONObject.getString(JSONObject.java:664) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseValue(JSONFieldParser.java:199) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:138) 
    ... 49 more 

Jan 13, 2015 8:55:37 AM com.google.api.server.spi.SystemService invokeServiceMethod 
SEVERE: org.json.JSONException: JSONObject["icon"] not a string. 
fi.foyt.foursquare.api.FoursquareApiException: org.json.JSONException: JSONObject["icon"] not a string. 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:140) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseValue(JSONFieldParser.java:191) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:138) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntities(JSONFieldParser.java:57) 
    at fi.foyt.foursquare.api.FoursquareApi.venuesSearch(FoursquareApi.java:939) 
    at com.jiacp.ciudadappoyo.backend.foursquare.apiEndpoint.searchVenues(apiEndpoint.java:87) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:359) 
    at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:160) 
    at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:118) 
    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:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:127) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:491) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Caused by: org.json.JSONException: JSONObject["icon"] not a string. 
    at org.json.JSONObject.getString(JSONObject.java:664) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseValue(JSONFieldParser.java:199) 
    at fi.foyt.foursquare.api.JSONFieldParser.parseEntity(JSONFieldParser.java:138) 
    ... 49 more 

답변

0

Foursquare API doco '아이콘'에서 찾고있는이 아니다 반환 값으로 나열됩니다.

필자는 동일한 Java Foursquare API를 사용하여이를 확인하고 현재 사양에서 유효하도록 많은 사항을 변경해야했습니다.

내 제안은 VenuesSearchResult 클래스를 살펴보고 거기에 아이콘에 대한 참조가 있는지 확인하는 것입니다.

+0

고맙습니다. 개인 CompactVenue [] 장소 만 찾았습니다. 개인 VenueGroup [] 그룹; 개인 GeoCode 지오 코드; 나는 메소드를 잡기 위해 주석을 추가했지만 아직 작동하지만 훌륭한 솔루션이라고 생각하지 않습니다. – contreras