Tha*_*Aid 1 java rest client-server
我无法正确格式化我的PUT请求以使我的服务器识别我的客户端应用程序的PUT命令.
这是我的一段代码,它将JSON字符串放入服务器.
try {
URI uri = new URI("the server address goes here");
URL url = uri.toURL();
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(gson.toJson(newClient));
out.close();
} catch (Exception e) {
Logger.getLogger(CATHomeMain.class.getName()).log(Level.SEVERE, null, e);
}
Run Code Online (Sandbox Code Playgroud)
这是应该捕获PUT命令的代码
@PUT
@Consumes("text/plain")
public void postAddClient(String content, @PathParam("var1") String var1, @PathParam("var2") String var2) {
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您还需要告诉客户端它正在执行JSON的PUT.否则它将尝试POST一些未知类型的东西(详细的服务器日志可能会记录失败),这根本不是你想要的.(省略了异常处理.)
URI uri = new URI("the server address goes here");
HttpURLConnection conn = (HttpURLConnection) uri.toURL().openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
conn.addRequestProperty("Content-Type", "application/json");
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(gson.toJson(newClient));
out.close();
// Check here that you succeeded!
Run Code Online (Sandbox Code Playgroud)
在服务器端,您希望它@Consumes("application/json")当然要声明它,并且您可能希望该方法返回结果的表示或重定向到它(请参阅此SO问题以讨论问题),以便您的结果方法不应该是void,而是值类型或JAX-RS Response(这是如何进行重定向).
| 归档时间: |
|
| 查看次数: |
12468 次 |
| 最近记录: |