2 a263482604 a263482604 于 2016.05.12 11:48 提问

cxf restful 错误 HTTP 405 Method Not Allowed

初次使用cxf+restful 遇到错误 javax.ws.rs.ClientErrorException: HTTP 405 Method Not Allowed,有谁帮忙看看

测试的客户端和服务端的类:
public class MyClient {

public static void main(String[] args) throws Exception {  
    //go("http://localhost:9000/ws/jaxrs/customer/1/info");  
    //go("http://localhost:9000/ws/jaxrs/customer/search?name=abc");  
    //go("http://localhost:9000/ws/jaxrs");  
    //go("http://localhost:9000/ws/jaxrs/customer/search?name=abc"); 
    go1("http://localhost:9000/ws/jaxrs");  
}  

private static void go(String url) throws Exception { 
    /* String result = WebClient.create(url)
                .path("/sample/map")
                .query("name", "world")
                .get(String.class);
            System.out.println(result);*/
    //room, Room.class
    RequestParam s = new RequestParam();
    Response c=WebClient.create(url).path("/sample/map").post(s);
    System.out.println(c);
        }}
        ---------------
        public class MyServer {  
public static void main(String[] args) throws Exception {  
    /*JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();  
    factoryBean.getInInterceptors().add(new LoggingInInterceptor());  
    factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());  
    factoryBean.setResourceClasses(CustomerServiceImpl.class);  
    factoryBean.setAddress("http://localhost:9000/ws/jaxrs");  
    factoryBean.create();*/  
    JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();
    factoryBean.setResourceClasses(ResponseService.class);
    factoryBean.setAddress("http://localhost:9000/ws/jaxrs"); 
    factoryBean.create();
}  

}

用到的类:MapBean.class 、ResponseResult.class、ResponseResults.class、IResponseService.class、ResponseService.class
@Path(value = "/sample")
public class ResponseService implements IResponseService{

@Context
private UriInfo uriInfo;

@Context
private Request request;

@POST
@Path("/map")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public MapBean getMap(RequestParam requestParam) {
    System.out.println("####getMap#####");
    System.out.println("Method:" + request.getMethod());
    System.out.println("uri:" + uriInfo.getPath());
    System.out.println(uriInfo.getPathParameters());

    Map<String, ResponseResult> map = new HashMap<String, ResponseResult>();
    List<ResponseResult> list = new ArrayList<ResponseResult>();
    ResponseResult responseResult = null;
    for (int i = 0; i < 4;i ++) {
        responseResult = new ResponseResult();
        responseResult = new ResponseResult();
        responseResult.setId(i+"");
        responseResult.setName("JojO-" + i);
        map.put("key-" + i, responseResult);
        list.add(responseResult);
    }
    /*responseResult = new ResponseResult();
    responseResult.setId(i);
    responseResult.setName("JojO-" + i);*/
    MapBean bean = new MapBean();
    bean.setMap(map);
    bean.setResponseResults(list);
    bean.setCode("code");
    bean.setDesc("desc");
    bean.setErrorCode("error");
    bean.setErrorMsg("msg");
    return bean;
}

}

@Path(value = "/sample")
public interface IResponseService {

@POST
@Path("/map")
@Consumes({"application/json","application/xml"})  
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public MapBean getMap(RequestParam requestParam);

}

@XmlRootElement(name="MapBean")
public class MapBean {

private String code;
private String desc;
private String errorCode;
private String errorMsg;

private Map<String, ResponseResult> map;

private List<ResponseResult> responseResults;
}
--------------
@XmlRootElement(name="ResponseResults")

public class ResponseResults {
private List responseResults;
}
-------------
@XmlRootElement(name="ResponseResult")
public class ResponseResult {
private String id;
private String name;
}

2个回答

CSDNXIAOC
CSDNXIAOC   2016.05.12 11:52

    今天在调试一个ASP.Net 程序的时候出现了题目中的错误,具体提示如下图:

    因为是初学者,对给出的原因提示还不是很懂,在网上找了大半晌的解决方案竟是一些同样问题却没有答案的。后来看到一张图片的提示,然后联想上图中的提示,自己去IIS管理器中瞎鼓捣最终竟然解决了。然后总结了一下,最大的原因就在于HTTP谓词。所谓......
答案就在这里:HTTP错误405-Method Not Allowed
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

silehaixianghuirenj
silehaixianghuirenj   2016.10.08 01:21

tful 错误 HTTP 405 Method Not Allowed
初次使用cxf+restful 遇到错误 javax.ws.rs.ClientErrorException: HTTP 405 Method Not Allowed,有谁帮忙看看
测试的客户端和服务端的类:
public class MyClient {
public static void main(String[] args) throws Exception {

//go("http://localhost:9000/ws/jaxrs/customer/1/info");

//go("http://localhost:9000/ws/jaxrs/customer/search?name=abc");

//go("http://localhost:9000/ws/jaxrs");

//go("http://localhost:9000/ws/jaxrs/customer/search?name=abc");
go1("http://localhost:9000/ws/jaxrs");

}

private static void go(String url) throws Exception {
/* String result = WebClient.create(url)
.path("/sample/map")
.query("name", "world")
.get(String.class);
System.out.println(result);*/
//room, Room.class
RequestParam s = new RequestParam();
Response c=WebClient.create(url).path("/sample/map").post(s);
System.out.println(c);
}}
---------------
public class MyServer {

public static void main(String[] args) throws Exception {

/*JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();

factoryBean.getInInterceptors().add(new LoggingInInterceptor());

factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
RESTful GET,405 Method not Allowed
如果你的RESTful api路径下的返回值为String的方法为static方法,就会返回这个错误:405 Method not Allowed请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)对指定的资源不适用 简单粗暴的方法是,去掉static就好了。
IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
IIS7.5上的REST服务的Put,Delete操作发生HTTP Error 405.0 - Method Not Allowed 解决方法 WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。在IIS 7.0中,WebDAV是作为独立扩展模块
IIS 8.0部署ASP.Net, WebAPI, Restful API, PUT/DELETE 报405错解决办法, method not allowed 405
iis 8.0 布署WCF服务报405错误
Flask HTTP 405 错误--Method not allowed
#!flask/bin/python from flask import Flask, jsonify from flask import abort from flask import make_response from flask import request from flask import redirect app = Flask(__name__) tasks = [ ...
WebApi HTTP Put 405 Method not allowed
遇到一些问题,总结一下
用spring mvc+mybaties写用户信息修改出现HTTP 405 错误--Method not allowed
一般405问题都是前的请求方法与后台的接受方法不一致导致的问题。 我的前台jsp页面代码 修改 后台@RequestMapping(value="/modifyinstitutionView.do",method = RequestMethod.POST) public String updateinstitutionView(HttpServletRequest request){
跨域调用web.py的restful接口报:OPTIONS https://... 405 (Method Not Allowed)
错误信息如下: OPTIONS https://ip:1234/... 405 (Method Not Allowed) XMLHttpRequest cannot load https://IP:1234/.... Response to preflight request doesn't pass access control check: No 'Access-Control-Allow
IIS7.5上的REST服务的Put操作发生HTTP Error 405.0 - Method Not Allowed
WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝、移动、删除等。在IIS 7.0中,WebDAV是作为独立扩展模块,需要单独进行下载,而IIS 7.5中将集成WebDAV,然而WebDav把Put,Delete给咔嚓了。所以在IIS 7.5上部署的RESTful服务(
http请求 405错误 方法不被允许 (Method not allowed)
由于自己疏忽,导致请求错误405,然后前端数据传输没错,百度大都说跟post提交方式有关,改成get还是报错,检查才知道,controller中忘记写@requestMapping("/XXX"),hahhahah 被自己粗心蠢哭了,,,从而导致没有没有方法被加载到,方法不予许,下面是相关405错误的解释 HTTP 协议定义一些方法,以指明为获取客户端(如您的浏览器或我们的 CheckUpD
HTTP错误405-Method Not Allowed
今天在调试一个ASP.Net 程序的时候出现了题目中的错误,具体提示如下图:         因为是初学者,对给出的原因提示还不是很懂,在网上找了大半晌的解决方案竟是一些同样问题却没有答案的。后来看到一张图片的提示,然后联想上图中的提示,自己去IIS管理器中瞎鼓捣最终竟然解决了。然后总结了一下,最大的原因就在于HTTP谓词。所谓HTTP谓词就是指Web服务器处理用户提交的请求的方法,一般有G