http 协议中GET如何传递参数(Query String)?

        因为项目需要,最近在手搓一个Http Connection,目的是实现最简单的Http访问,能通过Get或则Post方法向数数的日志服务器传递数据。之前看过数数提供的开发包,因为服务器用的是C++,而数数提供的C/C++开发包简陋的吓人,简单的看了一下代码,发现这些SDK在内存,临界区管理,多线程管理上没有做任何优化,如果直接使用,不仅增加了服务器的风险,还降低了服务器的性能,所以决定使用数数的POST接口来传递数据,但是需要自己手搓一个Http Connection来实现Http的访问。

        由于之前搞Web Scoket的时候,已经做了一些Http协议的基础代码,包括请求行,状态行,请求头,响应头等,所以基本上就是在这些基础上进一步的封装。实现Http的访问并不难,但是在Get 方法如何传递参数的时候碰到了问题,因为并没有文档详细的说明消息的传递过程,浪费了我不少时间,现在把我找到答案的记录如下:

        请求行分了三部分,第一个部分是方法,这儿 固定的使用GET,第二部分就是访问的路径和参数,第三部分是HTTP版本,我们使用 HTTP/1.1。

        对于第二部分,需要对URI进行拆分,首先将协议,域名和端口拆出来,这一部分需要单独处理,另外,将 Segments,即目录拆分出来,需要单独的拼装,构造成 /path1/path2/method 这种形式,而拆分出来的 Query 也需要单独处理,对Query的 Key 和 Value 分别进行 URL Encode,然后组装成 Key1=Value1&Key2=Value2 这种形式,并且用 ? 将QueryString和路径拼接在一起。然后这个才是请求行能识别的正确的访问路径和参数。

        直接对URI进行  URL Encode 是不行的,需要对 key 和 value 单独处理。

        对于拆出来的域名,需要用Host标签单独的放入请求头中,如:Host: www.xxx.com 作为请求头的一部分一起发送给服务器。

       

相关推荐

  1. http 协议GET如何传递参数(Query String)?

    2024-07-20 07:18:01       12 阅读
  2. 微信小程序 不同页面如何传递参数

    2024-07-20 07:18:01       55 阅读
  3. Oracle如何把整个表作为参数传递

    2024-07-20 07:18:01       45 阅读
  4. HTTP超文本传输协议

    2024-07-20 07:18:01       52 阅读
  5. HTTP超文本传输协议

    2024-07-20 07:18:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 07:18:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 07:18:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 07:18:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 07:18:01       55 阅读

热门阅读

  1. 浏览器的缓存

    2024-07-20 07:18:01       17 阅读
  2. 记录贴-idea导入别人的项目

    2024-07-20 07:18:01       14 阅读
  3. 【SpringBoot】分页查询

    2024-07-20 07:18:01       16 阅读
  4. 第九十六周周报

    2024-07-20 07:18:01       14 阅读
  5. Webserver笔记

    2024-07-20 07:18:01       16 阅读
  6. mybatis-sql实战总结

    2024-07-20 07:18:01       17 阅读
  7. Python--正则表达式re模块基础匹配方法

    2024-07-20 07:18:01       16 阅读
  8. 2024-07-19 Unity插件 Odin Serializer1 —— 插件介绍

    2024-07-20 07:18:01       17 阅读
  9. 【多商户自营解决方案】

    2024-07-20 07:18:01       16 阅读
  10. 基于深度学习的股票预测

    2024-07-20 07:18:01       15 阅读
  11. centos(或openEuler系统)安装clickhouse集群

    2024-07-20 07:18:01       14 阅读
  12. 介绍下项目的架构

    2024-07-20 07:18:01       11 阅读