工作中经常会被同事问这个http请求为什么调不通,我虽然能解释清楚错误是什么,但是没有总结过,想到刚开始时,也是看了别人的文章才会的,所以总结一下,贡献一下自己的经验。

http 404 响应

404响应可以说是,在java web中最常见的错误了,基本上大家都理解问题产生的原因,即找不到这个资源。

  • 路径匹配错误导致的404

比如说请求的访问路径为http://localhost:8080/project/test,但是访问路径确实http://localhost:8080/project/tset, 这样就会报404错误,这是最常见的;

如果,项目名写错了呢?

测试结果如下:

Request URL:http://localhost:8080/projects/test
Request Method:OPTIONS
Status Code:404 Not Found
Remote Address:[::1]:8080
Referrer Policy:no-referrer-when-downgrade

仍然是404错误。

  • 如果路径端口或ip写错误

    如果把端口写错了,测试结果如下:
Request URL:http://localhost:8090/project/test
Referrer Policy:no-referrer-when-downgrade
Request Headers
Provisional headers are shown
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:POST
Origin:http://localhost:8010
Referer:http://localhost:8010/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

没有状态值,也没有错误信息,所以看到这样的请求,可以查看一下是否端口写错了。

如果把ip写错了,测试结果如下:

Request URL:http://www.baidu.com:8090/project/test
Referrer Policy:no-referrer-when-downgrade
Request Headers
Provisional headers are shown
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:POST
Origin:http://localhost:8010
Referer:http://localhost:8010/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

还是这样的错误,所以遇到这样的错误,不仅要查看端口,还要查看ip是不是对的。

- 总结

路径写错了,一般会导致404错误,还有可能导致无法调通,遇到以上错误,可查找对应的原因,解决错误。遇到404了,不要总想着自己没错。总有同事会说,怎么可能写错,我复制过来的,可能你确实是复制的接口文档的内容,但是后台开发的同事改了或者写错了,与其纠结到底谁的责任,不如早点查到问题原因。

http 400响应

http 400错误,也算是一个比较常见的错误,这种错误的原因非常明确,就是请求的数据和接受的数据无法匹配,有一下两种常见情况:

  • 数据格式错误

    我初期经常遇到这种错误,比如说,我的后台接口接受参数的代码如下:
public Message getTestInfo(@RequestBoday Test test) {
Message message = new Message();
`````省略
return message
}

基本上,用过的一看就明白,这是接受一个json字符串格式的数据,把数据映射到Test类上。而那时候,我用jquery ajax提交数据经常这么写:

$.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("提交数据失败!");
}
});

当时还不懂这东西,都是跟着别人写,记得当时同事都下班,自己写的时候遇到这种错误,想的头都疼了都不知道怎么改。

返回的错误信息如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 400 Bad Request</title>
</head>
<body><h2>HTTP ERROR 400</h2>
<p>Problem accessing /project/test. Reason:
<pre> Bad Request</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.1.v20170120</a><hr/> </body>
</html>

错误很明显,数据实际格式表单格式,后台接受json字符串格式,怎么可能对?(这里有一个前提条件,前后的请求类型要一致,后台只接收post请求,前台发的也是post请求,如果发的是get请求,就会报Error 405 Request method 'GET' not supported 错误)。

  • 字段数据类型不一致

这种问题很常见,比如给数值字段传了一个含有非数值的字符串,给数组或者集合传了字符串;

下面是接收数据的对象,接收的数据格式为json字符串:

public class Test{

    private int test;
}

我发送的参数的格式

{
"test":"abc"
}

测试结果:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 400 Bad Request</title>
</head>
<body><h2>HTTP ERROR 400</h2>
<p>Problem accessing /cybx-core-service/role/test. Reason:
<pre> Bad Request</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.1.v20170120</a><hr/> </body>
</html>

出现400错误了。

  • 总结

所以遇见400错误,只要从这两方面找问题,基本都能解决问题。

http 415响应

遇见415响应的问题相对较少一些,而且这个响应的问题也非常明确,前后台媒体类型不一致,可以简单理解为content-type不一致。

 @RequestMapping(value = "test", method = RequestMethod.POST)
public Message test(@RequestBody Test test) { Message message = new Message(); System.out.println("参数是==" + test.getRname()); return message;
}

上面这种写法,是在spring mvc框架的项目中常见的写法,接收post请求,接收json字符串参数,下面是请求:


Request URL:http://localhost:8010/project/role/test
Request Method:POST
Status Code:415 Unsupported Media Type
Remote Address:127.0.0.1:8010
Referrer Policy: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"}:

这是返回的响应:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 415 Unsupported Media Type</title>
</head>
<body><h2>HTTP ERROR 415</h2>
<p>Problem accessing /cybx-core-service/role/test. Reason:
<pre> Unsupported Media Type</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.1.v20170120</a><hr/> </body>
</html>

由此可知,即使实体中的数据是json字符串格式,请求也是post请求,只要content-type不一致,就会报415错误。

  • 总结

    遇到415错误,首先要确定接口到底要接收什么格式的数据,然后再看一下请求发送的是什么格式,问题基本上就解决了。

    但是当你不知道自己调用的接口是需要什么格式的数据的时候,请先确定接口类型;如果是调用第三方接口,就向第三方接口索要接口对接文档,如果是同事写的,就向同事确认接口类型;我的同事对接第三方接口时,经常遇到不明不白的接口,做的第一件事就是打电话和qq向他们要资料。

http 320响应

302响应遇到相当少的一个错误,大概只遇到不到10次,但是有点诡异的一个错误,只要去网上搜,基本都会看到临时重定向这个解释。我的同事告诉我这是网络的问题,和代码没有关系,只能怪运气不好,刷新一下就好了。

但是,我遇到了几次,全都是因为后台代码执行出现了错误导致的,有人会说代码出错,不应该报500响应么,怎么会是302。

这就是我说的诡异的情况,代码执行出错却报了302错误。可惜的是我没有保留当时的日志文件,我现在无法重现这个错误。

所以,我建议,如果遇到302错误,先不要把错误推给重定向,也有可能是代码出错了,找到详细的执行日志,看看有没有错误,有可能就是错误导致的。

http 500响应

500响应,这是最常见额错误,一般都是后台代码执行出错了,只要找到错误代码修改就行,没什么好说的。

总结

以上就是我处理http响应的经验,希望能帮到他人,也算一个总结。

原文地址:https://blog.csdn.net/u010173095/article/details/77652107

http响应总结:常见http响应错误总结的更多相关文章

  1. URI、URL、请求、响应、常见状态代码

    URI:路径(统一资源标识符,包括本地地址和网络地址) URL是URI的一种子路径, URI范围比URL范围广. URL (Uniform Resource Locator,统一全球资源定位符): 通 ...

  2. 19. HTTP协议二:HTTP请求与响应、常见状态码

    HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...

  3. PHP. 02®. Ajax异步处理、常见的响应状态、XMLHttpRequest对象及API、ajax的get/post方法、

    异步对象 a)创建异步对象 b)设置请求的url等参数 c)  发送请求 d)注册时间 e)在注册的事件中获取返回的内容并修改页面显示的内容 布尔类型不能直接用echo输出 常见的响应状态 Ajax概 ...

  4. HTTP最常见的响应头

    HTTP最常见的响应头如下所示: l         Allow:服务器支持哪些请求方法(如GET.POST等): l         Content-Encoding:文档的编码(Encode)方法 ...

  5. iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全

    一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...

  6. Windows Server 2008R2常见的500错误

    每次公司服务器装系统后再去部署服务,都会碰到这个问题,这里记录一下问题的解决方法 遇到“500 – 内部服务器错误. 您查找的资源存在问题,因而无法显示.”的问题. 解决办法: 1.解决方法:打开II ...

  7. 常见的 Kerberos 错误消息

    常见的 Kerberos 错误消息 问题:All authentication systems disabled; connection refused 原因:此版本的 rlogind 不支持任何验证 ...

  8. 常见的http错误提示

    1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明100 (继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101 (切换协议 ...

  9. 【应急响应】Windows应急响应入门手册

    0x01 应急响应概述   首先我们来了解一下两个概念:应急响应和安全建设,这两者的区别就是应急响应是被动响应.安全建设是主动防御.  所谓有因才有果,既然是被动的,那么我们在应急响应的时候就得先了解 ...

  10. 常见http代码错误原因及处理

    常见的HTTP错误可以分为以下四大类.每一大类又细分为很多类小错误.当您打不开网站或者打开网站报错时首先检查您输入的网站是否有误,检查网络是否有问题或者虚拟主机的DNS是否可以解析.确定没有问题时再看 ...

随机推荐

  1. SPC软控件提供商NWA的产品在各行业的应用(化工行业)

    Northwest Analytical (NWA)是全球领先的“工业4.0”制造分析SPC软件控件提供商.产品(包含: NWA Quality Analyst , NWA Focus EMI 和 N ...

  2. sparkSQL中的example学习(1)

    SparkSQLDemo.scala import org.apache.spark.sql.{Row, SparkSession} import org.apache.spark.sql.types ...

  3. 基于JieBaNet+Lucene.Net实现全文搜索

    实现效果: 上一篇文章有附全文搜索结果的设计图,下面截一张开发完成上线后的实图: 基本风格是模仿的百度搜索结果,绿色的分页略显小清新. 目前已采集并创建索引的文章约3W多篇,索引文件不算太大,查询速度 ...

  4. PostgreSQL 插入行、查表、导出

    1.连接数据库 使用cmd选择安装路径下的psql.exe     登录用户名为postgres   输入密码进行登录. D:\PostgreSQL\9.6\bin\psql.exe -U postg ...

  5. Linux下CPU利用率和负载的关系

    1.CPU利用率和负载 CPU利用率显示的是程序在运行期间实时占用的CPU百分比:cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进 ...

  6. 201871010124-王生涛《面向对象程序设计(java)》第十五周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...

  7. 多线程(四)多线程同步_Critical Section临界区

    临界区是指一个小代码段,在代码能够执行前,它必须独占对某些共享资源的访问权.和使用mutex一样,它们都是以原子操作方式来对共享资源进行访问. 临界区又叫关键代码段,与上一篇的mutex互斥体实现的功 ...

  8. git 清空所有commit记录

    说明:例如将代码提交到git仓库,将一些敏感信息提交,所以需要删除提交记录以彻底清除提交信息,以得到一个干净的仓库且代码不变 1.Checkout git checkout --orphan late ...

  9. LG2053/BZOJ1070 「SCOI2007」修车 费用流

    问题描述 LG2053 BZOJ1070 题解 将\(m\)个修理工拆为\(n \times m\)个,将修理工和车辆看做二分图,连出一个完全二分图. 边流量为\(1\),费用为时间,费用流即可. \ ...

  10. Nexus 私服上传文件,并通过 Gradle 引用

    一.上传文件到 Nexus 1,进入 Nexus 仓库界面 如果你电脑还没有使用 Nexus,需要先下载并启动 Nexus 私服. 在浏览器输入:http://127.0.0.1:8081/nexus ...