通过Socket实现Http中Get请求

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

对于网络通信这部分,一直搞不清楚网络模型中传输层协议和应用层协议是怎么进行交互的,于是想通过直接使用TCP协议实现http请求的发送,所以这里通过Socket编程来完成这项工作,在Java中还可以使用原生的HttpURLConnection或者Apache中的HttpClient完成Http请求的发送,但是这种方式已经是对Socket进行封装,对我们理解Http的原理没有帮助。

要想完成这个功能需要以下两部分技能:

  • Java网络编程的相关内容
  • Http协议的相关内容:不要求特别了解,但是基本的机制需要知道

首先把整体的代码先列出来,如下MyHttpGet

public class MyHttpGet {
   
   
    private String host;
    private int port;
    private String contextPath;
    private StringBuffer requestMessage;
    private Map<String, String> headers = new LinkedHashMap<>();
    private Map<String, String> params = new HashMap<>();

    public MyHttpGet(String address) throws MalformedURLException{
        URL url = new URL(address);
        this.port = url.getDefaultPort();
        this.host = url.getHost();
        
探究HTTP报文并原生socket手写实现HTTP请求的request和response http报文以及原生socket实现http协议request和response的解析 阅读详情

相关推荐

Socket简单实现Get和Post请求

1、背景 最近看了OkHttp源码,用的责任链模式,通过一些列拦截器(如重定向、缓存、网络链接等)实现网络请求,服务器连接部分是通过是Socket而不是封装HttpURLConnection,因此手动实现一下,加深记忆。 2、HTTP请求格式 贴一张图,来自HTTP请求格式 这个图就是实现的核心,通过Socket的输出流,把上述格式的字符串数据传给服务器,再通过输入流读取服务器的响应即可。 ...

pxq的博客 4126

如何使用SOCKET 发送HTTP1.1 GET POST请求

如何使用SOCKET 发送HTTP1.1 GET POST请求HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。 (1)请求行请

成长专栏 3万+

Java Socket 实现HTTPHTTPS协议发送POST/GET请求

Java Socket 实现HTTPHTTPS协议发送POST/GET请求

qq_44894516的博客 1122

使用socket发送http请求(GET/POST)

原文地址:http://blog.163.com/zongyuan1987@126/blog/static/13162315620108104825970/ 使用socket发送http请求(GET/POST) 1.socket的原理 在相关文章中已经提及,不再赘述。 2.http头的格式 (1)请求请求行由请求方法字段、URL字段和HTTP协议版本字段3个字

duhaomin的专栏 6218

c++MFC使用socket发送http请求GET请求部分

C++发送HTTP请求 使用SOCKET发送HTTPGET请求 //引入头文件和命名空间,这里的引用可能不全面,如果调试报错查看引用自行添加 #include <string> using namespace std; void SOCK_HTTP_GET(string m_data,string m_host,int port) { WORD wVersionRequested; WSADATA wsaData; int ret; //WinSock初始化 wVersionReq

qq_45166271的博客 979

socket编程实现http GET请求

// 如果host不是点分十进制格式,则将其转换成点分十进制格式 BOOL CTestDlg::GetRealIP(string& host, string& retip) { retip = host; unsigned long t = inet_addr((char*)(LPCSTR)host.c_str()); if (t == INADDR_NONE) { hostent

SP_daiyq的专栏 4118

java使用socket实现http简单get请求

Java代码 package com.hs; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.OutputStream; import java.ne

大河塬 775

linux c socket 实现http get/post请求

文件 getHtml.c #include #include #include #include #include #include int create_tcp_socket(); char *get_ip(char *host); char *build_get_query(char *host,char *page); void usage(); #define HOST

yangguo_2011的专栏 8731

php socket提供http,PHP Socket (实现http get 请求

1、通过PHP socket实现 http get请求目的:学习PHP - socket 通信过程2、开发socket 注意的问题1)socket_send and socket_recv第四个参数一般都写0就可以的,如果按PHP的帮助文档中写如下的参数如:MSG_OOBSend OOB (out-of-band) data.MSG_EORIndicate a record mark. The...

weixin_29173299的博客 223

点击按钮通过get请求php_通过 Socket 实现 HTTP 协议中的 GET 请求

请求地址: http://localhost:8091/exercise/gate.php, 提供服务:echo json_encode($_GET, JSON_UNESCAPED_UNICODE); get.php// 发送个体请求 $host = '127.0.0.1'; $port = 8091; if(($sock = socket_create(AF_INET, SOCK_STREAM...

weixin_34086714的博客 490

JAVA Socket 实现HTTPHTTPS客户端发送POST与GET方式请求

一个简单演示如果使用JAVA Socket实现HTTP GET请求数据与HTTP POST提交数据的客户端 希望让更多的人知道写HTTP客户端并不难,离开HTTP Client等第三方库,JAVA一样玩得转HTTP 连接.

关注微信公众号【OpenCV学堂】 3万+

Socket编程到HTTP客户端:C++实现GET/POST请求网络调试

网络通信是现代软件开发的基础,其核心是建立在TCP/IP协议栈之上的应用层协议。HTTP作为最广泛使用的应用层协议,规定了客户端与服务器之间请求与响应的标准格式。理解HTTP协议的原理,对于排查网络问题、优化应用性能至关重要。通过Socket编程直接实现HTTP客户端,能够深入掌握请求报文组装、响应解析、连接管理等底层细节,这是理解网络库工作原理和调试复杂网络问题的关键技能。在实践中,开发者常遇到如502 Bad Gateway、连接超时等错误,这些往往与请求头格式、TCP连接状态或代理配置相关。本文通过C

weixin_30312563的博客 309

网络JAVA Socket 实现HTTPHTTPS客户端发送POST与GET方式请求

JAVA Socket 实现HTTPHTTPS客户端发送POST与GET方式请求   哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是别人写得API库,所以我就自己实现了一个简单的HTTP客户端,支持POST 方式提交数据,GET方式查询数据,是测试Restful API比较方便点,然后支持form与JSON两 种方式提

u011494050的专栏 2029
上一篇: MySQL中配置参数的管理
下一篇: Hadoop MapReduce编程模型
lmy86263
博客等级 码龄13年 354粉丝 96原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值