Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Google应用程序引擎-如何将对象返回到我的servlet?_Java_Google App Engine_Jsp_Servlets - Fatal编程技术网

Java Google应用程序引擎-如何将对象返回到我的servlet?

Java Google应用程序引擎-如何将对象返回到我的servlet?,java,google-app-engine,jsp,servlets,Java,Google App Engine,Jsp,Servlets,有人知道我如何将一个对象(更具体地说是一个列表)发送到我的servlet,它是另一个Java应用程序,不在Google App Engine中 更新:我在GAE中的servlet工作正常,它序列化了我的列表结果: public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { String titulo = req.getParameter("titulo"); S

有人知道我如何将一个对象(更具体地说是一个
列表
)发送到我的servlet,它是另一个Java应用程序,不在Google App Engine中


更新:我在GAE中的servlet工作正常,它序列化了我的
列表
结果:

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {

    String titulo = req.getParameter("titulo");
    String json = "";

    PersistenceManager pm = PMF.get().getPersistenceManager();
    Query query = pm.newQuery("select from "+Video.class.getName()+ " where titulo.startsWith('"+titulo+"')");
    List<Video> video = (List<Video>) pm.newQuery(query).execute();

    json = new Gson().toJson(video);
    System.out.println("SERIALIZED >> " + json);

    res.setContentType("application/json");
    res.setCharacterEncoding("UTF-8");
    res.getWriter().write(json);
}
public void doGet(HttpServletRequest-req,HttpServletResponse-res)抛出IOException{
字符串titulo=req.getParameter(“titulo”);
字符串json=“”;
PersistenceManager pm=PMF.get().getPersistenceManager();
Query Query=pm.newQuery(“从“+Video.class.getName()+”中选择,其中titulo.startsWith(“+titulo+”)”);
List video=(List)pm.newQuery(query.execute();
json=new Gson().toJson(视频);
System.out.println(“序列化>>”+json);
res.setContentType(“应用程序/json”);
res.setCharacterEncoding(“UTF-8”);
res.getWriter().write(json);
}
我的调用servlet具有以下方法:

public void receberMetaDados(String titulo) throws IOException, Exception{
    InputStream input = new URL("http://localhost:8888/serve?titulo="+titulo).openStream();
    Reader reader = new InputStreamReader(input, "UTF-8");
    List<Video> results = new Gson().fromJson(reader, new TypeToken<List<Video>>(){}.getType());
}
public void receiberMetadados(字符串titulo)抛出IOException,Exception{
InputStream输入=新URL(“http://localhost:8888/serve?titulo=“+titulo.openStream();
读卡器=新的InputStreamReader(输入,“UTF-8”);
List results=new Gson().fromJson(读取器,new TypeToken(){}.getType());
}
我得到以下例外情况:

com.google.gson.JsonParseException:JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@2d7440未能反序列化json对象[{“id”:“301020101113847691504”,“titulo”:“天使之城”,“descripao”:“Um belo filme”,“date”:“30/11/2010 13:38:47”},{“id”:“301020010115514196289”,“titulo”:“天使之城”,“descripao”:“Um belo filme”,“date:”30/11/2010 13:55:14“,”{“id:”30101011561620697“,”Titolo:”天使之城“,”描述“,”Um belo filme“,”date:”30/11/2010 13:56:01“,{“id:”30101012829669834“,”Titolo:”天使之城“,”描述“,”Um belo filme”,“date:”30/11/2010 14:08:29“,{“id:”301201010128496627,“Titolo:”天使之城“,”描述“,”Um belo filme“,”日期:““30/11/2010 14:08:49”},{“id:“3010201012919920893”,“Titolo:“天使之城”,“descricao:“Um belo filme”,“日期:”:“30/11/2010 14:09:19”}]给定类型java.util.List 在com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:63)上 在com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:88)上 位于com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:76) 在com.google.gson.ObjectNavigator.accept上(ObjectNavigator.java:106) 位于com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:64) 位于com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:49) 位于com.google.gson.gson.fromJson(gson.java:568) 位于com.google.gson.gson.fromJson(gson.java:515) 位于com.google.gson.gson.fromJson(gson.java:484) 在classes.Manip.receberMetaDados(Manip.java:64) 在servlet.OurTube\u servlet.buscar(OurTube\u servlet.java:105) 在servlet.OurTube\u servlet.doPost(OurTube\u servlet.java:55) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 运行(Thread.java:662) 原因:java.lang.RuntimeException:没有类的参数构造函数。视频不存在。请向Gson注册此类型的InstanceCreator以修复此问题。 在com.google.gson.MappedObjectConstructor.constructWithNoArgConstructor(MappedObjectConstructor.java:64)上 位于com.google.gson.MappedObjectConstructor.construct(MappedObjectConstructor.java:53) 位于com.google.gson.JsonObjectDeserializationVisitor.constructTarget(JsonObjectDeserializationVisitor.java:40) 位于com.google.gson.JsonDeserializationVisitor.getTarget(JsonDeserializationVisitor.java:56) 在com.google.gson.ObjectNavigator.accept上(ObjectNavigator.java:109) 位于com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:73) 位于com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:51) 在com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.deserialize上(DefaultTypeAdapters.java:548) 在com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.deserialize上(DefaultTypeAdapters.java:510) 在com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:50)上 …还有25个


我不知道出了什么问题,谢谢你的帮助。

这取决于情况。如果它是作为HTTP请求的HTTP响应返回的,那么你需要将其转换为符合特定格式的字符串。最流行的是XML和JSON。另一端只需读入XML或JSON字符串,然后重新创建
List<Result> results = someDAO.list();
String json = new Gson().toJson(list);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
InputStream input = new URL("http://example.com/servleturl").openStream();
Reader reader = new InputStreamReader(input, "UTF-8");
List<Result> results = new Gson().fromJson(reader, new TypeToken<List<Result>>(){}.getType());
public class Video {
    public Video() {
        // Always keep default c'tor alive whenever you
        // supply another c'tor in a Javabean class.
    }
}