客户端Http请求失败原因总结

几天没写博客了,最近看到有同学问http请求失败是怎么回事,于是想写一篇关于http请求失败各种原因的文章,废话不多说,写起来

一.访问服务器形式

    1.向服务器请求数据,是域名访问还是IP访问

           域名是否正确,IP地址是否正确,端口是否与服务器端匹配,这是由于不停的在开发环境、测试环境,或者生产环境来回切换导致的,比较容易排查

    2.拼接字符是否有误

          大小写字母,单词拼写,比如,succes,结果写成success,这个真有

二.URL地址格式

    1.地址中是否缺少或者多余“/”,或者有其他不相干的多余字段。以get请求为例,正确的如下:  

             http://www.xxxx.com/search?key1=val1&key2=val2&key3=val3

             一些错误的:

             http:www.xxxx.com/search?key1=val1&key2=val2&key3=val3     (http:的后面少“//”,确实有这样的情况)

             http:/www.xxxx.com/search?key1=val1&key2=val2&key3=val3    (http:/的后面少“/”)

   2.包含中文的url地址

         对包含中文的url地址,可能会出现浏览器请求成功,而客户端请求失败情况,这时,要查看是否对包含中文的URL进行编码

         为什么浏览器可以请求成功?

              浏览器内部默认对URL进行编码

        为何客户端请求失败?

             在编写http网络代码时,需要自己对URL进行编码处理,使用URLEncoder.encode(url,charset)。如果没有,URL地址很可能存在乱码,导致请求无法响应

             很多网络请求框架,实际上其内部已经对URL地址进行了统一编码

             比如:URL编码前,http://www.xxxx.com/search?scope=bbs&q=java语言

                         URL编码后,http://www.xxxx.com/search?scope=bbs&q=java%E8%AF%AD%E8%A8%80

三.请求参数

    1.get请求,是在URL地址后,以“?”形式携带参数,如下:

        简单点的,http://www.xxxx.com/search?key1=val1&key2=val2&key3=val3

        复杂点的,http://www.xxxx.com/search?data={xxx}            ({}中的内容由服务器端制定或者客服两端协商的,一般是json数据)

        而下面这种形式,是错误的地址

        http://www.xxxx.com/search??key1=val1&key2=val2&key3=val3     (多余一个“?”)

    2.post请求时,可能涉及比较多的参数键值对,这时,查看是否漏掉某个参数,与服务器开发人员一一确认,不要嫌麻烦,一定要的

    3.请求传参时,确认参数是否是必传值或者非必传值,或者有默认传值,参数值类型需要注意,比如需要传递整型,结果传递字符串

四.请求header是否要设置

    1.header的键值是否正确,header的键,也就是名字,一般固定。而header值不确定,有固定值的尽量复制,对不固定值的,确保获取header值方法或者生成规则无误

    2.多个网络请求使用同一header时,header值是否发生新的改变。比如一个网络请求时改变了header值,导致需要同一header的另一请求无法获得正确响应

    3.多个网络请求有不同的header,是否只设置自身请求所需要的header,不设置不必要的header。这点,如果服务器有严格的header校验机制,一旦传递多余header,也会

    4.导致请求失败,如果没有校验,侥幸成功响应,也最好不要多传无用的header

五.是否htts请求

    需要证书的,添加必要的安全访问机制


 好了,以上是实际开发可能遇到小问题,有些是粗心大意造成的,有些是代码不严谨留下的bug,但不可否认正是这些细节浪费了宝贵的时间,为此整理下,方便以后的开发调试。可能有些没有涉及到的问题,有想法或者有兴趣的小伙伴可以一起探讨下,后续我会更新上来..

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值