java options 405_java – 为什么我在执行POST请求时得到405方法不允许

我是其他服务的新手.我正在尝试创建一个从客户端接受json字符串的服务.当我使用JQuery调用此服务时,我收到405错误.下面是ws的Java代码:

这是我向JERSEY POST RESTFUL Webservice发布请求的方式.

var orderinfo = {'ordersplitjson': ordersplitjson, 'customer_id': cust_id , 'homedelivery': homedelivery, 'seatnum' :seatnum , 'locationname':location_nam , 'rownum':rownum};

var json_data = JSON.stringify(orderinfo);

var ajaxcallquery = $.ajax({

type:'POST',

dataType: 'jsonp',

data: json_data,

contentType: "application/json; charset=utf-8",

url:url '/OMS/oms1/orderinsertservice',

jsonpCallback:'jsonCallback',

jsonp:false,

success: function(response)

{

},

error: function(jqxhr, status, errorMsg) {

alert('Failed! ' errorMsg);

}

});

public class OrdersInsertService

{

@POST

@Consumes(MediaType.APPLICATION_JSON)

@Produces("application/json")

public String getData(OrderInfo order,@Context HttpServletResponse serverResponse)

throws JSONException

{

serverResponse.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");

serverResponse.addHeader("Access-Control-Allow-Credentials", "true");

serverResponse.addHeader("Access-Control-Allow-Origin", "*");

serverResponse.addHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With");

serverResponse.addHeader("Access-Control-Max-Age", "60");

}

}

package com.util;

public class OrderInfo {

String ordersplitjson;

public String getOrdersplitjson() {

return ordersplitjson;

}

public void setOrdersplitjson(String ordersplitjson) {

this.ordersplitjson = ordersplitjson;

}

public String getCustomer_id() {

return customer_id;

}

public void setCustomer_id(String customer_id) {

this.customer_id = customer_id;

}

public String getHomedelivery() {

return homedelivery;

}

public void setHomedelivery(String homedelivery) {

this.homedelivery = homedelivery;

}

public String getSeatnum() {

return seatnum;

}

public void setSeatnum(String seatnum) {

this.seatnum = seatnum;

}

public String getLocationname() {

return locationname;

}

public void setLocationname(String locationname) {

this.locationname = locationname;

}

public String getRownum() {

return rownum;

}

public void setRownum(String rownum) {

this.rownum = rownum;

}

String customer_id;

String homedelivery;

String seatnum;

String locationname;

String rownum;

}

有人可以让我知道如何解决这个问题

我正在使用Jersey 1,当我使用你的课时,它给我一个eclipse中的编译错误,如图所示

解决方法:

(1)dataType:’jsonp’应该是json.摆脱所有与jsonp相关的东西.它应该是json. jsonp将自动更改为GET请求,因此405(方法不允许).您的资源方法接受POST.

(2)CORS问题.您需要一个过滤器来处理飞行前.如果您使用的是Jersey 1,则可以使用此课程

import com.sun.jersey.spi.container.ContainerRequest;

import com.sun.jersey.spi.container.ContainerResponse;

import com.sun.jersey.spi.container.ContainerResponseFilter;

public class CORSFilter implements ContainerResponseFilter {

@Override

public ContainerResponse filter(ContainerRequest request,

ContainerResponse response) {

response.getHttpHeaders().add("Access-Control-Allow-Origin", "*");

response.getHttpHeaders().add("Access-Control-Allow-Headers",

"origin, content-type, accept, authorization");

response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true");

response.getHttpHeaders().add("Access-Control-Allow-Methods",

"GET, POST, PUT, DELETE, OPTIONS, HEAD");

return response;

}

}

然后注册就好

resourceConfig.getContainerResponseFilters().add(new CORSFilter());

使用web.xml,添加此项

com.sun.jersey.spi.container.ContainerResponseFilters

com.yourpackage.CORSFilter

在< servlet>内包含Jersey servlet的元素来源:https://www.icode9.com/content-1-277851.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值