用浏览器测试Get与Post Webservice,Post一直报405错误,而Get能够成功的原因与解决方法
2017-04-25 22:25
393 查看
楼主在用Jersey开发Restful Webservice的时候碰到了这样一个问题
同样一个方法实现,用@get定义和@post定义,@get能通过测试,而@post不能
从来我以为get和post只是一种规范,好吧。。。从某种程度上,是的。
但是当使用浏览器去测试它的时候,就不是了
通过浏览器的地址栏输入地址,所访问的URL都是get请求,因此如果以post定义方法,那么由于请求与实现的不一致,会返回405错误,method not allowed, The specified HTTP method is not allowed for the requested resource.
这归根到底是因为浏览器发送了get请求,而方法只能处理post请求,所以发生的错误
可能是这么问题太low了,我网上找了一大圈都没有找到答案,最后在stackoverflow上找到了解答
http://stackoverflow.com/questions/25253972/put-jersey-error-405-method-not-allowed
他说的很好,如果想用浏览器做post的测试,那么就下一个chrome的postman插件,完美解决你的问题
最后从360Doc上找到了Get和Post请求的区别,贴在这里
1. 哪一些情况下,浏览器会发送get请求
a. 直接在浏览器地址栏输入某个地址
b. 点击链接
c. 表单默认的提交方式
2. 哪一些情况下,浏览器会发送post请求?
a. 设置表单method = "post"
3. get请求的特点
a. 请求参数会添加到请求资源路劲的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)(2K左右的数据,看起来也不少。。。)
b. 请求参数会显示在浏览器地址栏,路由器会记录请求地址
4. post请求的特点
a. 请求参数添加到实体内容里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到Http包的实体当中)
b. 相对安全,但是,post请求不会对请求参数进行加密处理(可以使用https协议来保证数据安全)。
同样一个方法实现,用@get定义和@post定义,@get能通过测试,而@post不能
但是当使用浏览器去测试它的时候,就不是了
通过浏览器的地址栏输入地址,所访问的URL都是get请求,因此如果以post定义方法,那么由于请求与实现的不一致,会返回405错误,method not allowed, The specified HTTP method is not allowed for the requested resource.
这归根到底是因为浏览器发送了get请求,而方法只能处理post请求,所以发生的错误
可能是这么问题太low了,我网上找了一大圈都没有找到答案,最后在stackoverflow上找到了解答
http://stackoverflow.com/questions/25253972/put-jersey-error-405-method-not-allowed
他说的很好,如果想用浏览器做post的测试,那么就下一个chrome的postman插件,完美解决你的问题
最后从360Doc上找到了Get和Post请求的区别,贴在这里
1. 哪一些情况下,浏览器会发送get请求
a. 直接在浏览器地址栏输入某个地址
b. 点击链接
c. 表单默认的提交方式
2. 哪一些情况下,浏览器会发送post请求?
a. 设置表单method = "post"
3. get请求的特点
a. 请求参数会添加到请求资源路劲的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)(2K左右的数据,看起来也不少。。。)
b. 请求参数会显示在浏览器地址栏,路由器会记录请求地址
4. post请求的特点
a. 请求参数添加到实体内容里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到Http包的实体当中)
b. 相对安全,但是,post请求不会对请求参数进行加密处理(可以使用https协议来保证数据安全)。
相关文章推荐
- 通过httpwebrequest实现http的post和get方法莫名出现500内部服务器错误的解决办法
- [转载]WebService 发布不成功,显示无法找到该页错误 404的解决方法
- u3d中 rect[2] == rt->GetGLWidth() && rect[3] == rt->GetGLHeight()错误的原因及解决方法
- WebService 发布不成功,显示无法找到该页错误 404的解决方法
- thinkphp3.2 I('get.id') 在 ningx代理apache下面错误 GET POST参数都变成_URL_ 解决方法 I函数
- servlet层调用biz业务层出现浏览器 500错误,解决方法 dao数据访问层 数据库Util工具类都可能出错 通过新建一个测试类复制代码逐步测试查找出最终出错原因
- [转]WebService 中Maximum request length exceeded. 产生错误的原因,以及解决方法.
- Unity3D中中 rect[2] == rt->GetGLWidth() && rect[3] == rt->GetGLHeight()错误的原因及解决方法
- Nginx直接post请求获取静态文件 返回405错误的终极解决方法
- 出现HTTP Status 405 - HTTP method GET is not supported by this URL 原因及解决方法:
- 解决servlet中输出中文到浏览器以及post、get两种提交方法乱码问题
- unity3d 中rect[2] <= rt->GetGLWidth() && rect[3] <= rt->GetGLHeight()错误的原因及解决方法
- WebService 发布不成功,显示无法找到该页错误 404的解决方法
- Nginx静态文件响应POST请求 提示405错误的解决方法
- springMVC出现HTTP Status 405 - Request method 'GET' not supported错误的解决方法
- tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
- 在原有VS2005基础上安2008测试版本2以后出现:配置节错误:web.config/protocols 解决方法。
- WebService支持Post和Get方法
- 复制错误的原因和解决方法 from msdn2
- tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法