JAVA-生成预定的JSON

我从这开始: http : //examples.javacodegeeks.com/enterprise-java/rest/jersey/json-example-with-jersey-jackson/并在localhost上创建了一个JSON:8080 ……我不确定是否有是每3或5秒生成新Json的任何方法。 例如,每3秒只向新的JSON添加一个数字。

@Path("/LNU.se") public class EntryPoint { @GET @Path("get") @Produces(MediaType.TEXT_PLAIN) public String test() { return "mahdi Test"; } @POST @Path("post") @Consumes(MediaType.TEXT_PLAIN) public Response postTest(Track track){ String resault = " the track is saved mahdi: "+ track; return Response.status(201).entity(resault).build(); } } 

和另一课:

 import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public class App { public static void main(String[] args) { ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath("/"); Server jettyServer = new Server(8080); jettyServer.setHandler(context); ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/*"); jerseyServlet.setInitOrder(0); jerseyServlet.setInitParameter( "jersey.config.server.provider.classnames", EntryPoint.class.getCanonicalName()); try { jettyServer.start(); System.out.println(" open your browser on http://localhost:8080/LNU.se/get"); jettyServer.join(); } catch (Exception e) { e.printStackTrace(); } finally { jettyServer.destroy(); } } } 

======================

更新: – >

我的服务器是:

 package rest; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public class RestServer { public static void main(String[] args) throws Exception { ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath("/"); Server jettyServer = new Server(8080); jettyServer.setHandler(context); ServletHolder jerseyServlet = context.addServlet( org.glassfish.jersey.servlet.ServletContainer.class, "/*"); jerseyServlet.setInitOrder(0); jerseyServlet.setInitParameter("jersey.config.server.provider.classnames", Calculator.class.getCanonicalName()); try { jettyServer.start(); System.out.println(" open the browser on http://localhost:8080/calculator/squareRoot?input=16"); jettyServer.join(); } finally { jettyServer.destroy(); } } } 

而这堂课:

 package rest; import java.awt.event.ItemEvent; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.json.simple.JSONArray; import org.json.simple.JSONObject; @Path("calculator") public class Calculator { Result ress = new Result("mahdi84"); public static String resul1; @GET @Path("mahdi") @Produces(MediaType.APPLICATION_JSON) public Result mahdi(){ JSONObject json = new JSONObject(); json.put("validTime", "2016-02-24T11:00:00Z"); JSONArray jsonArray = new JSONArray(); JSONObject obj = new JSONObject(); obj.put("mcc", resul1); obj.put("temprature", resul1+1); obj.put("Humidity", resul1+10); jsonArray.add(obj); json.put("\n JSONdata --> ", jsonArray); ress.setInput(Double.parseDouble(resul1)); ress.setOutput(Double.parseDouble(resul1)); ress.setTestVar(resul1); ress.setTestVar2(json); return ress; } @POST @Path("/post") @Consumes(MediaType.APPLICATION_JSON) public Response createDataInJSON(String data) { resul1= data; return Response.status(201).entity(result).build(); } static class Result{ double input; double output; String action; Object testVar; JSONObject testVar2; public Result(){} public JSONObject getTestVar2() { return testVar2; } public void setTestVar2(JSONObject testVar2) { this.testVar2 = testVar2; } public Object getTestVar() { return testVar; } public void setTestVar(Object testVar) { this.testVar = testVar; } public Result(String action) { this.action = action; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public double getInput() { return input; } public void setInput(double input) { this.input = input; } public double getOutput() { return output; } public void setOutput(double output) { this.output = output; } } } 

我的客户是:

  import java.util.Timer; import java.util.TimerTask; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; public class JerseyClientPost extends TimerTask{ public int cuntr = 0; public static void main(String[] args) { TimerTask mytask = new JerseyClientPost(); Timer timer = new Timer(); timer.schedule(mytask, 1000, 1000); } @Override public void run() { try { Client client = Client.create(); WebResource webResource = client.resource("http://localhost:8080/calculator/post"); String input = Integer.toString(cuntr++); ClientResponse response = webResource.type("application/json").post(ClientResponse.class, input); if (response.getStatus() != 201) { throw new RuntimeException("Failed : HTTP error code : "+ response.getStatus()); } String output = response.getEntity(String.class); } catch (Exception e) { e.printStackTrace(); } } } 

客户端将每隔1秒发布到服务器,当我尝试从“ http:// localhost:8080 / calculator / mahdi ”读取时,服务器将在“ http:// localhost:8080 / calculator / mahdi ”上生成新的JSON通过apache http1.1在另一个程序中:包HttpClient;

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; public class MyHttpClient { public static void main(String[] args) throws Exception{ HttpGet requset = new HttpGet("http://localhost:8080/calculator/mahdi"); DefaultHttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(requset); HttpEntity entity = response.getEntity(); BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); System.out.println("Reading began ... "); while (true) { String line = br.readLine(); if (line != null && !line.isEmpty()) { System.out.println(line); } } } } 

编辑:

谢谢我通过使用TImeTask类来做到这一点

它只打印第一个JSON! 但是当我刷新weblink时,它正在浏览器上更新。 如果我错了,请你纠正我吗? 我想在MyHttpClient上看到JSON流,但它只显示第一个JSON!

我觉得你在混合东西。 服务器应该只是一个服务器,而不是扩展TimerTask。 客户端应该在特定的intervall上调用服务器

请做以下事项:

  1. 在Web浏览器中测试您的服务器。 确保它会响应。
  2. 用Java或javascript编写客户端如果您使用Java,客户端应该有一个http客户端。
  3. 客户端应该在特定的intervall中调用服务器的时间任务