Java REST如何提出POST请求

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

我试图从客户端发布xml,并使用我的服务中的xml。当我尝试以下代码时,我得到了不受支持的媒体类型异常。 我试着效仿这个例子: 我做错了什么?有什么想法吗

客户端:

  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时丢失的地方。这可能会有帮助。