我正在尝试用Java开发一个Rest WebService(我正在使用RestEasy),它接受一个通用的JSonObject(我正在使用JSON Simple 1.1.1)。
到目前为止我做了什么:
@Path("/message")
public class TestRestService {
@POST
@Path("/{param}")
@Consumes("application/json")
public Response printMessage(JSONObject inputJsonObj) {
String result = "Restful example : " + inputJsonObj;
System.out.println(result);
return Response.status(200).entity(result).build();
}
}
这是我的客户:
public static void main(String[] args) { try { URL url = new URL("http://localhost:8080/myProject/rest/message/"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); String input = "{\"qty\":100,\"name\":\"iPad 4\"}"; OutputStream os = conn.getOutputStream(); os.write(input.getBytes()); os.flush(); if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream()))); String output; System.out.println("Output from Server .... \n"); while ((output = br.readLine()) != null) { System.out.println(output); } conn.disconnect(); } catch (MalformedURLException e) { } catch (IOException e) { } }
不幸的是我收到405错误,这意味着我认为不存在的路径......
有人能帮助我吗?
谢谢!
答案 0 :(得分:0)
好像你错过了路径的/ {param} -part。现在你没有跟踪/ message中的部分,但你的网络服务器找不到只接受传递给/ message的方法。由于您没有尝试在方法中使用/ {param},我建议您从方法中删除@ Path-Annotation。这是可能的,因为框架将尝试在下一级别使用@Path注释(这里是您的类级别,这将是您的/消息路径),并使用注释到您的方法的HTTP方法。如果/ {param}应该是一个可选参数,我建议你在方法头中使用@QueryParameter注释。有关此注释的更多信息,您应该阅读javax.ws.rs框架的文档 亲切的问候