遇见的http协议的一些难题

原创 2018年04月15日 20:52:21

    这周来了任务,让我重构以前的代码,代码是从几年前JPA迁移到SpringMVC+Spring+Mybatis,并且利用springBoot进行微服务部署,springCloud进行分布式。刚开始的时候确实很绝望,注释也少,写的也很迷,看的我是怀疑人生,心里焦躁不已;但是在经过几天反复阅读之后,能够上手了。在这段期间,学习到了许多东西。

  1.通过将项目打包成jar包的方式部署在linux上,并且通过idea的DEBUG远程调试方式,访问远程,而在本地进行代码跟踪,确实很好用。

  2.期间让我自己写一个Feign的方法调用其他服务,这个接口很简单,但是我却写了大半天才完成。接下来我将介绍一下自己遇见的一些问题

   (1)首先,因为别人并没有在Eureka注册,我就不知道@FeignClient的name属性写什么,后来了解到,可以通过该注解的url属性:url一般用于调试,可以手动指定@FeignClient调用的地址。

   (2) 在访问别人请求的时候,有一系列的要求:最主要的是需要在请求头里放置参数,这个难题当时难倒我了。顺道回忆一下http协议吧。

    ①http协议是基于7层网络协议里面的传输层TCP传输协议。而http不像TCP,会占据系统较多的资源。

    ②http协议是一种短连接,当客户端发出请求,服务端接受到客户端的请求,产生响应,返回给客户端,然后断开连接。
    ③http协议,会认为每次请求都是一次新的请求,因此需要一个识别码,让服务端知道这次的请求是上一个客户端的请求,以便完成操作,这就是session的由来,session在一定程度上依赖cookie。(这是自己的理解,可能不太正确)
    ④http协议分为了几个部分:

          请求信息分为了4部分:

          1.请求行(包含了请求方式、url路径、http协议版本)例如:GET /X.html HTTP/1.1

          2.请求头(已键值对方式,描述客户端相关信息)例如:Content-Type:application/json
          3.空行(作为请求头和消息体之间的标识)
          4.消息体(用于描述表单信息,GET没有,POST有)

          相应信息分为了4部分:
          1.状态行(描述协议版本,状态码,以及状态描述)

          2.响应头(已键值对方式,描述服务端相关信息)
          3.空行(作为响应头和消息体之间的标识)

          4.消息体(描述服务器传输给客户端的信息)

好了,简单地描述完http协议之后,讲述一下,我所涉及到的请求头参数问题。当时要求给个加密后的字段,时间戳。考虑过使用公司编写的feign的拦截器,但是他们告诉我这样做麻烦了,直接使用@requestHeader注解。我当时是采用3个@requestHeader的方式进行传输请求头信息,但是不知为何传输不过去,并且还必须让我写成@requestHeader("content-Type/")这样的形式才不会报错,不知为何要我写/;后来尝试了其他的写法,我在@requestMapping里面写了headers={“content-Type:application/json;charset=utf-8;”}这样仍然报错,不过能看懂了,大体是说我键不正确,由于是参考本公司大佬的写法,找了很久,发现改成headers={“content-Type=application/json;charset=utf-8;”},这样就能够成功传输请求头 其中@RequestHeader("key")String value。


碰到困难,心情有点沉重

今天是2014-12-02号,今天碰到了暂时没有办法解决的困难。公司让抄板一个项目,基本上完成各种功能,但是电压采样存在非线性超差问题,这个问题着实让我非常头疼!同时也感觉到压力瞬秒间变得很大呀! 这...
  • lishan1998
  • lishan1998
  • 2014-12-02 20:44:05
  • 425

遇到难题(bug)的解决方法心得

其实想想这个问题以及解决问题 的过程。可以得到几点启示。 1, 虽然这两个小时感觉有点冤枉,但其实还是有所收获的,那就是对BT流式布局的了解多了。 2 ,在解决问题的时候要用一些方法,而不是盲目的瞎尝...
  • PHP1923880282
  • PHP1923880282
  • 2013-09-04 12:03:36
  • 655

Socket学习 - tcp协议速度入门和http协议的区别

前面我们做了这样一件事1、用打电话来描述了PHP构建socket服务端和客户端的方法 2、用浏览器来测试我们的服务端 3、期间我们发现浏览器和服务端采用了HTTP协议进行沟通,且如果我们的服务端不...
  • github_26672553
  • github_26672553
  • 2017-01-09 14:23:27
  • 651

Web前端开发中会遇到的浏览器兼容问题(消灭bug②)

一、 最小高度兼容IE6 方法:1、min-height:100px; height:auto!important; height:100px;    2、min-height:100px; _h...
  • SunnyYang222
  • SunnyYang222
  • 2017-11-09 20:14:36
  • 147

【Java--工作记录】工作遇到的问题记录--更新中

1、简单排序问题:选择排序,中间变量k,双层循环 2、字符串判断为空,判断为null应该放在前面,判断为""放后面,不然会报空指针错误 3、 & 运算是,如果对应的两个bit都是1,则那个bit结果为...
  • a872728984
  • a872728984
  • 2015-04-02 09:23:29
  • 301

unity问题汇总

1,unity不论是单个prefab,还是多个prefab合在一起,都必须修改最上层的对象的RectTransform来达到适配,修改下层对象RectTransform来做适配都将得到错误的效果。 ...
  • tran119
  • tran119
  • 2017-11-27 16:24:20
  • 78

socket协议和http协议性能对比

最近做了一次队列服务的性能测试,是通过两种协议windows socket和http分别往内存中写入url。对比哪种协议的效果更高,下图是测试结果。此次使用的工具是loadrunner。在压socke...
  • lxlmj
  • lxlmj
  • 2009-09-08 17:18:00
  • 10180

【技术文档】开发一个人力资源管理系统遇到的问题及解决的方法

经过两个半月的实习,接触了很多Java Web开发的知识,不能说完全理解Java Web开发的技术,但在开发过程中遇到的一些问题,使自己的技术有很大的提高。当遇到问题时,通过在网上搜集解决的方法,和通...
  • chenhong1989
  • chenhong1989
  • 2013-08-12 15:36:33
  • 2575

iPhone 163 pop3设置

  • 2012年12月21日 15:20
  • 358KB
  • 下载

[jzoj]3526. 【NOIP2013模拟11.7A组】不等式(solve)(类欧几里得)

https://jzoj.net/senior/#contest/show/2061/2Problem已知L,R,S,ML,R,S,M,求满足L
  • Algor_pro_king_John
  • Algor_pro_king_John
  • 2017-07-16 17:08:45
  • 236
收藏助手
不良信息举报
您举报文章:遇见的http协议的一些难题
举报原因:
原因补充:

(最多只允许输入30个字)