尝试执行POST时不允许REST Java方法

尝试执行POST时不允许REST Java方法,java,rest,http-status-code-405,Java,Rest,Http Status Code 405,我只想创建一个简单的REST服务,它使用@GET和@POST。 对于@GET功能,一切正常,但对于@POST,当我想在我的服务器上创建一个新用户时,浏览器会一直运行(不允许使用此方法)。 我读了很多关于如何修复这个错误的文章,但我还没有得到任何东西 我的@POST代码: @Path("/hello") public class HelloResource(){ @POST @Produces(MediaType.APPLICATION_JSON) @Path("/post") public Re

我只想创建一个简单的REST服务,它使用
@GET
@POST
。 对于
@GET
功能,一切正常,但对于
@POST
,当我想在我的服务器上创建一个新用户时,浏览器会一直运行(不允许使用此方法)。 我读了很多关于如何修复这个错误的文章,但我还没有得到任何东西

我的
@POST
代码:

@Path("/hello")
public class HelloResource(){
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/post")
public Response createUser(@PathParam("name") String name,@PathParam("address") String address,@PathParam("birthYear") String birth,@PathParam("ps") String password) throws NotAllowedException,MethodNotFoundException,Exception {


    DataStore.getInstance().putPerson(new Person(name, address, Integer.parseInt(birth), password));
    String json = "{\n";
    json += "\"status\": " + '"'+"CREATED" +'"'+ ",\n";
    json+="}";
    return Response.status(200).entity(json).build();





}}
我还尝试使用(MediaType.APPLICATION.JSON)和(MediaType.TEXT_PLAIN)添加
@Consumes
函数,但没有任何更改

此外,我为发布输入的URL为:

http://localhost:8080/HelloREST/rest/hello/post?name=PouYad&address=mustbejsonlater&birthYear=2005&ps=12345
如您所见,我还尝试了许多异常处理程序


有人能帮忙吗?

通过浏览器直接访问URL只能创建Get请求,不能创建POST请求

你应该

  • 创建HTML表单,使用POST方法将操作设置为您的服务url,然后提交它
  • 使用Rest客户端(如postman)通过POST方法访问您的服务
  • 使用java.net.httpapi编写您自己的Http客户端,或者只需使用 一个方便的库/框架(比如Spring有RestTemplate)

  • 通过浏览器直接访问URL只能创建Get请求,不能创建POST请求

    你应该

  • 创建HTML表单,使用POST方法将操作设置为您的服务url,然后提交它
  • 使用Rest客户端(如postman)通过POST方法访问您的服务
  • 使用java.net.httpapi编写您自己的Http客户端,或者只需使用 一个方便的库/框架(比如Spring有RestTemplate)
  • 如果在“浏览器URL地址”字段中输入URL,它将不起作用,因为浏览器将发送“获取”请求。因此,您必须使用一个客户端,它将允许您像邮递员一样发送“邮件”。或者编写您自己的小型httpConnection函数来发送“POST”

  • 您还必须将@PathParam更改为@FormParam才能工作(@QueryParam也可以工作,但因为它是POST,所以最好使用@FormParm)

  • 如果在“浏览器URL地址”字段中输入URL,它将不起作用,因为浏览器将发送“获取”请求。因此,您必须使用一个客户端,它将允许您像邮递员一样发送“邮件”。或者编写您自己的小型httpConnection函数来发送“POST”

  • 您还必须将@PathParam更改为@FormParam才能工作(@QueryParam也可以工作,但因为它是POST,所以最好使用@FormParm)


  • 你真的在发送POST请求吗?尝试添加@GET处理程序。我猜您实际上是在向应用程序发送GET请求;在这种情况下,“不允许使用方法”将是预期的错误,因为您只有POST的处理程序。您使用了错误的注释。使用
    @QueryParam
    ,而不是
    @PathParam
    。@GabrielBauman。你是什么意思?你能用邮递员工具试试吗?将http方法设置为post并重试。@PooyaSalehi我的意思是您可能正在向端点发送GET请求,而不是post。错误正好告诉你。你真的在发送POST请求吗?尝试添加@GET处理程序。我猜您实际上是在向应用程序发送GET请求;在这种情况下,“不允许使用方法”将是预期的错误,因为您只有POST的处理程序。您使用了错误的注释。使用
    @QueryParam
    ,而不是
    @PathParam
    。@GabrielBauman。你是什么意思?你能用邮递员工具试试吗?将http方法设置为post并重试。@PooyaSalehi我的意思是您可能正在向端点发送GET请求,而不是post。错误正是告诉你这一点。