Java REST如何提出POST请求
我试图从客户端发布xml,并使用我的服务中的xml。当我尝试以下代码时,我得到了不受支持的媒体类型异常。 我试着效仿这个例子: 我做错了什么?有什么想法吗 客户端:Java REST如何提出POST请求,java,xml,rest,Java,Xml,Rest,我试图从客户端发布xml,并使用我的服务中的xml。当我尝试以下代码时,我得到了不受支持的媒体类型异常。 我试着效仿这个例子: 我做错了什么?有什么想法吗 客户端: private void request(String url,Event event) throws IOException, SAXException { try { Client client = Client.create(); C
private void request(String url,Event event) throws IOException, SAXException {
try {
Client client = Client.create();
ClientResponse response = null;
WebResource webResource = client
.resource(url);
if(event != null){
response = webResource.accept("application/xml")
.post(ClientResponse.class,event);
}else{
response = webResource.accept("application/xml")
.get(ClientResponse.class);
}
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println("Output from Server .... \n");
System.out.println(output);
}catch (Exception e) {
e.printStackTrace();
}
服务器端:
@POST
@Path("/created")
@Consumes({"application/xml", MediaType.APPLICATION_FORM_URLENCODED,"text/html"})
@Produces ({"application/xml", MediaType.APPLICATION_FORM_URLENCODED,"text/html"})
public Response createEvent( @FormParam("eventtitle") String title,
@FormParam("eventtype") String type,
@FormParam("eventdescription") String description,
@FormParam("eventlocation") String location,
@FormParam("eventdate") String date,
@FormParam("eventcreationdate") String creationdate,
@FormParam("eventmodificationdate") String modificationdate,
@Context HttpServletResponse servletResponse) throws IOException {
final StringBuilder sb = new StringBuilder();
sb.append( "<h4>Event sucessfully created </h4>");
sb.append("<br></br><li><p><a href=\"/\">go back</a></p></li>");
Response.status(200).entity(sb.toString()).build();
Event event = eventWorker.createEvent(title,type,description,location,date,
creationdate,modificationdate);
return Response.ok(sb.toString()).cacheControl(CC).build();
}
@POST
@路径(“/created”)
@使用({“application/xml”,MediaType.application\u FORM\u URLENCODED,“text/html”})
@产生({“application/xml”、MediaType.application\u FORM\u URLENCODED、“text/html”})
公共响应createEvent(@FormParam(“eventtitle”)字符串标题,
@FormParam(“eventtype”)字符串类型,
@FormParam(“eventdescription”)字符串描述,
@FormParam(“eventlocation”)字符串位置,
@FormParam(“eventdate”)字符串日期,
@FormParam(“eventcreationdate”)字符串creationdate,
@FormParam(“eventmodificationdate”)字符串modificationdate,
@上下文HttpServletResponse(servletResponse)引发IOException{
最终StringBuilder sb=新StringBuilder();
sb.追加(“成功创建的事件”);
sb.追加(“
”);
Response.status(200).entity(sb.toString()).build();
Event Event=eventWorker.createEvent(标题、类型、描述、位置、日期、,
创建日期、修改日期);
返回Response.ok(sb.toString()).cacheControl(CC.build();
}
Akin,我的第一个猜测是内容类型-我看不出您在哪里设置了它。第二个可能是服务器本身——应该具有允许POST的访问控制Allow方法。这些是我在处理API时丢失的地方。这可能会有帮助。阿金,我的第一个猜测是内容类型-我不知道你在哪里设置它。第二个可能是服务器本身——应该具有允许POST的访问控制Allow方法。这些是我在处理API时丢失的地方。这可能会有帮助。