http响应总结常见http响应错误总结.docx
- 文档编号:4724953
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:6
- 大小:17.38KB
http响应总结常见http响应错误总结.docx
《http响应总结常见http响应错误总结.docx》由会员分享,可在线阅读,更多相关《http响应总结常见http响应错误总结.docx(6页珍藏版)》请在冰豆网上搜索。
http响应总结常见http响应错误总结
http响应总结:
常见http响应错误总结
工作中经常会被同事问这个http请求为什么调不通,我虽然能解释清楚错误是什么,但是没有总结过,想到刚开始时,也是看了别人的文章才会的,所以总结一下,贡献一下自己的经验。
http404响应
404响应可以说是,在javaweb中最常见的错误了,基本上大家都理解问题产生的原因,即找不到这个资源。
路径匹配错误导致的404
比如说请求的访问路径为http:
//localhost:
8080/project/test,但是访问路径确实http:
//localhost:
8080/project/tset,这样就会报404错误,这是最常见的;
如果,项目名写错了呢?
测试结果如下:
RequestURL:
http:
//localhost:
8080/projects/test
RequestMethod:
OPTIONS
StatusCode:
404NotFound
RemoteAddress:
[:
:
1]:
8080
ReferrerPolicy:
no-referrer-when-downgrade12345
仍然是404错误。
如果路径端口或ip写错误
如果把端口写错了,测试结果如下:
RequestURL:
http:
//localhost:
8090/project/test
ReferrerPolicy:
no-referrer-when-downgrade
RequestHeaders
Provisionalheadersareshown
Access-Control-Request-Headers:
content-type
Access-Control-Request-Method:
POST
Origin:
http:
//localhost:
8010
Referer:
http:
//localhost:
8010/
User-Agent:
Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/59.0.3071.115Safari/537.36123456789
没有状态值,也没有错误信息,所以看到这样的请求,可以查看一下是否端口写错了。
如果把ip写错了,测试结果如下:
RequestURL:
:
8090/project/test
ReferrerPolicy:
no-referrer-when-downgrade
RequestHeaders
Provisionalheadersareshown
Access-Control-Request-Headers:
content-type
Access-Control-Request-Method:
POST
Origin:
http:
//localhost:
8010
Referer:
http:
//localhost:
8010/
User-Agent:
Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/59.0.3071.115Safari/537.36123456789
还是这样的错误,所以遇到这样的错误,不仅要查看端口,还要查看ip是不是对的。
-总结
路径写错了,一般会导致404错误,还有可能导致无法调通,遇到以上错误,可查找对应的原因,解决错误。
遇到404了,不要总想着自己没错。
总有同事会说,怎么可能写错,我复制过来的,可能你确实是复制的接口文档的内容,但是后台开发的同事改了或者写错了,与其纠结到底谁的责任,不如早点查到问题原因。
http400响应
http400错误,也算是一个比较常见的错误,这种错误的原因非常明确,就是请求的数据和接受的数据无法匹配,有一下两种常见情况:
数据格式错误
我初期经常遇到这种错误,比如说,我的后台接口接受参数的代码如下:
publicMessagegetTestInfo(@RequestBodayTesttest){
Messagemessage=newMessage();
`````省略
returnmessage
}12345
基本上,用过的一看就明白,这是接受一个json字符串格式的数据,把数据映射到Test类上。
而那时候,我用jqueryajax提交数据经常这么写:
$.ajax({
type:
'POST',
url:
'test',
contentType:
'application/json;charset=utf-8',
data:
form.serialize(),
dataType:
'json',
success:
function(message){
if(message>0){
alert('请求已提交!
我们会尽快与您取得联系');
}
},
error:
function(message){
$('#request-process-patent').html('提交数据失败!
');
}
});123456789101112131415
当时还不懂这东西,都是跟着别人写,记得当时同事都下班,自己写的时候遇到这种错误,想的头都疼了都不知道怎么改。
返回的错误信息如下:
html>
head>
metahttp-equiv='Content-Type'content='text/html;charset=utf-8'/>
title>Error400BadRequesttitle>
head>
body>h2>HTTPERROR400h2>
p>Problemaccessing/project/test.Reason:
pre>BadRequestpre>p>hr>ahref='http:
//eclipse.org/jetty'>PoweredbyJetty:
//9.4.1.v20170120a>hr/>
body>
html>1234567891011
错误很明显,数据实际格式表单格式,后台接受json字符串格式,怎么可能对?
(这里有一个前提条件,前后的请求类型要一致,后台只接收post请求,前台发的也是post请求,如果发的是get请求,就会报Error405Requestmethod'GET'notsupported错误)。
字段数据类型不一致
这种问题很常见,比如给数值字段传了一个含有非数值的字符串,给数组或者集合传了字符串;
下面是接收数据的对象,接收的数据格式为json字符串:
publicclassTest{
privateinttest;
}1234
我发送的参数的格式
{
'test':
'abc'
}123
测试结果:
html>
head>
metahttp-equiv='Content-Type'content='text/html;charset=utf-8'/>
title>Error400BadRequesttitle>
head>
body>h2>HTTPERROR400h2>
p>Problemaccessing/cybx-core-service/role/test.Reason:
pre>BadRequestpre>p>hr>ahref='http:
//eclipse.org/jetty'>PoweredbyJetty:
//9.4.1.v20170120a>hr/>
body>
html>1234567891011
出现400错误了。
总结
所以遇见400错误,只要从这两方面找问题,基本都能解决问题。
http415响应
遇见415响应的问题相对较少一些,而且这个响应的问题也非常明确,前后台媒体类型不一致,可以简单理解为content-type不一致。
@RequestMapping(value='test',method=RequestMethod.POST)
publicMessagetest(@RequestBodyTesttest){
Messagemessage=newMessage();
System.out.println('参数是=='test.getRname());
returnmessage;
}123456789
上面这种写法,是在springmvc框架的项目中常见的写法,接收post请求,接收json字符串参数,下面是请求:
RequestURL:
http:
//localhost:
8010/project/role/test
RequestMethod:
POST
StatusCode:
415UnsupportedMediaType
RemoteAddress:
127.0.0.1:
8010
ReferrerPolicy:
no-referrer-when-downgrade
Accept:
application/json,text/plain,*/*
Accept-Encoding:
gzip,deflate,br
Accept-Language:
zh-CN,zh;q=0.8
Connection:
keep-alive
Content-Length:
29
Content-Type:
application/x-www-form-urlencoded;charset=UTF-8
{'test':
'123'}:
123456789101112131415
这是返回的响应:
html>
head>
metahttp-equiv='Content-Type'content='text/html;charset=utf-8'/>
title>Error415UnsupportedMediaTypetitle>
head>
body>h2>HTTPERROR415h2>
p>Problemaccessing/cybx-core-service/role/test.Reason:
pre>UnsupportedMediaTypepre>p>hr>ahref='http:
//eclipse.org/jetty'>PoweredbyJetty:
//9.4.1.v20170120a>hr/>
body>
html>1234567891011
由此可知,即使实体中的数据是json字符串格式,请求也是post请求,只要content-type不一致,就会报415错误。
总结
遇到415错误,首先要确定接口到底要接收什么格式的数据,然后再看一下请求发送的是什么格式,问题基本上就解决了。
但是当你不知道自己调用的接口是需要什么格式的数据的时候,请先确定接口类型;如果是调用第三方接口,就向第三方接口索要接口对接文档,如果是同事写的,就向同事确认接口类型;我的同事对接第三方接口时,经常遇到不明不白的接口,做的第一件事就是打电话和qq向他们要资料。
http320响应
302响应遇到相当少的一个错误,大概只遇到不到10次,但是有点诡异的一个错误,只要去网上搜,基本都会看到临时重定向这个解释。
我的同事告诉我这是网络的问题,和代码没有关系,只能怪运气不好,刷新一下就好了。
但是,我遇到了几次,全都是因为后台代码执行出现了错误导致的,有人会说代码出错,不应该报500响应么,怎么会是302。
这就是我说的诡异的情况,代码执行出错却报了302错误。
可惜的是我没有保留当时的日志文件,我现在无法重现这个错误。
所以,我建议,如果遇到302错误,先不要把错误推给重定向,也有可能是代码出错了,找到详细的执行日志,看看有没有错误,有可能就是错误导致的。
http500响应
500响应,这是最常见额错误,一般都是后台代码执行出错了,只要找到错误代码修改就行,没什么好说的。
总结
以上就是我处理http响应的经验,希望能帮到他人,也算一个总结。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- http 响应 总结 常见 错误
![提示](https://static.bdocx.com/images/bang_tan.gif)