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上调用服务器
请做以下事项:
- 在Web浏览器中测试您的服务器。 确保它会响应。
- 用Java或javascript编写客户端如果您使用Java,客户端应该有一个http客户端。
- 客户端应该在特定的intervall中调用服务器的时间任务
- MongoDB Java API:com.mongodb.DBCollection.Save()和com.mongodb.DBCollection.Insert()之间的区别?
- YouTube数据API:OAuth使用V3进行身份validation,无需用户干预
- 如何使用CCRC获取旧文件版本?
- 如何使用Java Drive Rest V2 API从Google Drive获取文档和文件的绝对路径?
- 如何获取Pinterest V3 API-KEY或access_token
- 服务器返回HTTP响应代码:503为URL
- 使用java中的REST api创建azure自动化帐户
- 如何以指定的时间间隔定期自动调用servlet
- 无法在libgdx中批处理多维数据集