【问题标题】:@POST Method REST - Status Code: 405 / Method Not Allowed@POST 方法 REST - 状态代码:405 / 方法不允许
【发布时间】:2020-06-17 17:59:21
【问题描述】:

@POST 方法 REST - 状态代码:405 / 方法不允许

我正在从 JSP 调用 REST 方法,导致错误 Status Code: 405 / Method Not Allowed

可能是什么原因以及如何解决问题?应用服务器Weblogic 12.2.1.4

@POST
public Object saveProduct(@FormParam("productId") String productId,
        @FormParam("productCategoryId") @Context HttpServletRequest request,
        @Context HttpHeaders headers) {

    String returnJSON = null;

    List<ProductList> productPersistList = new ArrayList<ProductList>();
    ProductPersist productPersist = new ProductPersist();
    productPersistList.add(productPersist);
    log.info("productId  " + productId);

    try {
        for (ProductList persistItems: productPersistList) {
            persistItems.setProductId(productId);

        }
        productPersistDAO.persistData(productPersistList);
        log.info("persist data  ");

        map.put("success", "true");
        map.put("msg", "Done");

        returnJSON = JSONObject.fromObject(map).toString();

    } catch (Exception e) {
        log.error("error from persistData " + e);
        e.printStackTrace();
    } finally {
        map.clear();
    }

    return returnJSON;
}

更新 1

下面是调用 REST API 的代码 sn-p,它是在 .js 文件中定义的

function saveProduct(param){
            $('#fmEdit').form('submit',{
                method: 'POST',
                contentType : "application/x-www-form-urlencoded",
                url: url,
                onSubmit: function(){
                    return $(this).form('validate');
                },
                success: function(result){
                    var result = eval('('+result+')');
                    if (result.errorMsg){
                        $.messager.show({
                            title: 'Error',
                            msg: result.errorMsg
                        });
                    } else {
                        successMessage();
                        $('#dg').datagrid('reload');
                        if(param=='saveclose' ){
                        $('#dlg').dialog('close');
                        }
                        else if(param == 'save'){
                        $('#fmEdit').form('clear');
                        }
                    }
                }
            });
        }

【问题讨论】:

  • 您能否在实际调用休息时添加代码?
  • @Nicktar 我已经用代码 sn-p 更新了帖子

标签: java json rest weblogic12c


【解决方案1】:

您是否尝试在 REST 服务方法中设置 Consumes(MediaType.APPLICATION_FORM_URLENCODED)?

【讨论】:

  • 你的意思是说,应该是@POST,而不是@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
  • ...两者,更好。在这种情况下,执行“hello”服务、检查 uris 等很有用(以避免潜在问题..)。@GET @Path("/hi") return "Hi, Fitipaladi!"; }
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 2014-05-23
  • 2021-12-20
  • 2021-07-07
相关资源
最近更新 更多