JAVA代码:通过Socket执行HTTP的GET方法

通过Socket实现Http中Get请求 对于网络通信这部分,一直搞不清楚网络模型中传输层协议和应用层协议是怎么进行交互的,于是想通过直接使用TCP协议实现http请求的发送,所以这里通过Socket编程来完成这项工作,在Java中还可以使用原生的HttpURLConnection或者Apache中的HttpClient完成Http请求的发送,但是这种方式已经是对Socket进行封装,对我们理解Http的原理没有帮助。 阅读详情
 
  1. package net.java2000.net;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.net.InetAddress;
  8. import java.net.Socket;
  9. /**
  10.  * 通过Socket写入数据,并读取返回结果。
  11.  * 
  12.  * @author 赵学庆,Java世纪网(java2000.net)
  13.  * 
  14.  */
  15. public class SocketWrite {
  16.   /**
  17.    * @param args
  18.    */
  19.   public static void main(String[] args) {
  20.     try {
  21.       // 创建连接
  22.       InetAddress addr = InetAddress.getByName("www.java2000.net");
  23.       int port = 80;
  24.       Socket socket = new Socket(addr, port);
  25.       // 写入数据
  26.       BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),
  27.           "UTF-8"));
  28.       wr.write("GET /test.jsp HTTP/1.1/r/n");
  29.       wr.write("Host: <a target="_blank" href="www.java2000.net">www.java2000.net</a>/r/n");
  30.       wr.write("/r/n");
  31.       wr.flush();
  32.       // 创建读取数据的Reader,里面指定了需要的编码类型。
  33.       BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream(),
  34.           "UTF-8"));
  35.       // 读取每一行的数据.注意大部分端口操作都需要交互数据。
  36.       String str;
  37.       while ((str = rd.readLine()) != null) {
  38.         System.out.println(str);
  39.       }
  40.       rd.close();
  41.     } catch (IOException e) {
  42.       e.printStackTrace();
  43.     }
  44.   }
  45. }

运行结果

HTTP/1.1 200 OK
Date: Sat, 30 Aug 2008 23:33:29 GMT
Server: Apache/2.2.4 (Win32) mod_jk/1.2.26
Vary: Host,Accept-Encoding
Set-Cookie: JSESSIONID=461C1DD78578EA39A1BBFD114F0BC2F3; Path=/
Content-Length: 220
Content-Type: text/html;charset=UTF-8


<!-- 测试页内容开始 -->
这里是JAVA世纪网,java2000.net。老紫竹欢迎你的光临。
本站以提供高质量的,验证过的JAVA代码,资料和项目为目标。
<!-- 测试页内容结束 -->


总结:
此文涉及到了HTTP协议的部分知识,请自行查找相关的资料。


原文: http://www.java2000.net/p9149
更多代码,请访问 http://code.java2000.net















<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Java Socket 实现HTTP与HTTPS协议发送POST/GET请求 阅读详情

相关推荐

Java使用socket通过http下载文件

目录前言socket套接字http协议正文http请求头:向服务器请求文件http请求头:分析服务器回传的头的信息例子:服务器回传的http头部信息:通过http下载文件的几个步骤注意事项:代码执行结果 前言 因为有一门课的实验要用到这个,而老师不让用URL对象,只能用socket,网上关于socket下载的资料少之又少,故总结之 socket套接字 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中

AKGWSB 's blog 2299

签名验签服务器

签名验签服务器

qq_34328425的博客 693

计算机考研常见面试题

写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数

qq_38841618的博客 2万+

使用java socket完成一个简单的http服务器解析Get请求

java

qq_41103091的博客 1147

AMEsim柱塞泵的建模学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为什么要对柱塞泵进行仿真?二、Amesim中柱塞泵的模型1.amesim中自己的定排量五柱塞的斜盘柱塞泵2.压力、流量仿真总结 前言 最近在学习Amesim进行柱塞泵的仿真学习,顺便在这里记录我的学习过程,这是我的初衷 提示:以下是本篇文章正文内容,下面案例可供参考 一、为什么要对柱塞泵进行仿真? 柱塞泵是功能和动力学比较复杂的流体机械。而在实际实验中,往往没有条件或者需要对柱塞泵做一些优化,所以需要我们利用仿真...

innocent_cft的博客 8188

千兆以太网PHY设计:PCB原理图完整示例

深入解析千兆以太网PHY电路设计要点,提供完整的PCB原理图设计实例,帮助工程师掌握高速信号布局与电源去耦等关键技术,提升设计稳定性与信号完整性。

weixin_30633869的博客 635

签名验签服务器简介

②基于PKI体系,提供数字签名技术,关键数据、访问控制信息、日志信息通过SM2签名验签实现完整性保护。③基于SM2签名验签技术,在不可否认性测评点,实现用户操作行为的不可否认性保护。1、定义:签名验签服务器是一种专用服务器,‌支持SM1\SM2\SM3\SM4等国密算法,基于PKI体系数字证书,提供数据签名与验签功能,确保数据的完整性,同时可提供证书验证服务,确保身份的真实性。3、签名验签服务器组成:CPU、内存、硬盘、网卡、密码卡、管理介质(ukey/IC卡)等。

weixin_44059507的博客 2247

基于Arduino与光电传感器的心率监测系统:从原理到实现的完整指南

光电式心率监测是一种基于光电容积脉搏波描记法(PPG)的非侵入式生命体征测量技术。其核心原理是利用特定波长光线照射皮肤组织,通过检测因血液容积周期性变化导致的反射光强微弱波动,来获取心率信息。这项技术的关键价值在于实现了低成本、便携化的连续生理参数监测,广泛应用于健康管理、运动科学及嵌入式系统教学领域。在工程实践中,信号处理算法(如移动平均滤波与动态阈值峰值检测)对提升测量精度至关重要。本文以Arduino平台为例,详细解析了如何集成MAX30102或Pulse Sensor Amped等光电传感器,结合T

weixin_33461476的博客 247

Java Socket正确读取数据姿势

前言 平时日常开发用得最多是Http通讯,接口调试也比较简单的,也有比较强大的框架支持(OkHttp)。 个人平时用到socket通讯的地方是Android与外设通讯,Android与ssl服务通讯,这种都是基于TCP/IP通讯,而且服务端和设备端协议都是不能修改的,只能按照相关报文格式进行通信。 但使用socket通讯问题不少,一般有两个难点: socket通讯层要自己写及IO流不正确使用,遇......

Kelly 2万+

SAP Integration Suite 与 SAP Cloud Integration 的关系解析

SAP Cloud Integration是SAP Integration Suite套件的核心组件,专注于消息与流程集成。两者关系可概括为:Integration Suite是SAP BTP上的集成平台套件(iPaaS),而Cloud Integration是其中负责应用与B2B集成的关键能力。日常所说的"CPI"实际指代的是Integration Suite中的Cloud Integration功能。该套件还包含API管理、事件网格等其他集成能力,共同构成企业集成解决方案。理解这一层

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 601

自定义Usecase/Pipeline

Summary of Custom Usecase and Pipeline Configuration in SA8650 QCX Framework This article elaborates on the complete process of customizing a new Usecase and Pipeline based on the SA8650 QCX framework to meet OEM and Tier1 customization requirements, with

qq_39257814的博客 930

密码学之CA如何验签?

CA(Certificate Authority)被称为证书授权中心,是数字证书发放和管理的机构。根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。数字证书颁发过程一般为:1、用户首先产生自己的密钥对;2、 将公共密钥(公钥)及部分个人身份信息传送给认证中心;3、认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。

weixin_43951811的博客 867

如何在飞腾平台上安装Ubuntu操作系统

注意: 若主板上配置的是NVME硬盘,在进行内核配置时,需要将内核的NEME驱动勾选上,否则移植内核时,无法找到文件系统,进不去操作系统。可以通过rufus软件将镜像做到U盘中,本次使用版本为Rufus 3.9.124 ,其他版本也可以。不要下载live版本的,没有准备网络环境,是一个头疼的事情,笔者暂时没有实现网络安装。将U盘接到主板usb口上,接上串口,显示器,,必需串口有打印才可以安装。可以通过dd命令,将iso安装到U盘。安装的是最小系统,缺少很多命令,需要联网更新,或则更换飞腾专用内核。

技术联盟 2645

JAVA编写的使用Socket模拟Http的GET操作

JAVA编写的使用Socket模拟Http的GET操作,看后就很容易理解Web浏览器的原理了。 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket;

雷霄骅(leixiaohua1020)的专栏 7194

vLLM显存逆向计算:如何得到最优gpu-memory-utilization参数

本文提出了一种**逆向工程**的思路:基于vLLM显存占用的底层机制,通过精确计算模型权重、KV缓存、激活内存等各组件的显存需求,**倒推出最优的gpu-memory-utilization参数**。这种方法让我们能够在部署前就准确预估资源需求,实现一次配置、稳定运行。本文我们将从vLLM显存计算的核心原理出发,构建完整的倒推计算框架和源码,并通过大量实验验证其准确性(会有误差,但基本可以直接使用)。

羊城迷鹿的博客 1953

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java网络编程:从Socket到HTTP通信

本文介绍了Java网络编程的核心内容,包括Socket编程和HTTP通信。Socket编程部分详细讲解了TCP/IP通信的实现方法,通过ServerSocket和Socket类实现客户端与服务器端的连接和数据传输。HTTP通信部分阐述了HTTP请求和响应的组成结构,以及常见的请求方法和状态码。最后,文章演示了如何使用Java的URL和URLConnection类发送HTTP请求。文中提供了完整的代码示例,包括服务器端和客户端的Socket通信实现,以及HTTP请求的发送方法。这些内容为开发者提供了Java网

今天比昨天更努力一点! 9768

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

大河塬 779

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java Socket/HttpURLConnection读取HTTP网页

以读取百度的http网页为例。如果知道了IP地址和端口,然后新建一个Socket,就直接去读百度的首页,根本没反应,原因是www.baidu.com是以http协议传输的,而现在要以Socket原始的套接字读写,远程服务器没有收到客户端的GET报文,故无法做出响应。正确的方式是在Socket输出流中写入HTTP的GET报文,输出流中的报文告诉远程服务器自己要GET网页内容,这样远程服务器才会响应我...

Zhang Phil 4555

java socket http请求_Java socket调用Http协议Get请求

HTTP是基于Socket之上的协议。HTTP Get是从服务器上获取数据。服务地址:http://127.0.0.1:8080/web/page/index.jsp模拟调用:import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStrea...

weixin_42177768的博客 418

用Java Socket手撸了一个HTTP服务器

这一块需要注意一点,正文可能为空,也可能有数据;有数据时,我们要如何把所有的数据都取出来呢?

恒二哥的博客 2036

java socket http请求_java通过socket执行http请求

导入包:importjava.io.*;importjava.net.HttpURLConnection;importjava.net.MalformedURLException;importjava.net.Socket;importjava.net.URL;importjava.util.List;/***通过socket请求**@paramurlString*@param...

weixin_29798625的博客 397

在Java中用Socket类模拟HTTP协议

Http客户端程序已集成在Java语言中,可以通过URLConnection类调用。遗憾的 是,由于SUN没有公布Http客户程序的源码,它实现的细节仍是一个谜。本文根据HTTP协议规范,用Java.net.Socket类实现一个HTTP协议客户端程序。     HTTP协议     HTTP协议同其它TCP/IP协议集中的协议一样,是遵循客户/服务器模型工作的。客户端发往服务

小毅的书屋 3586
上一篇: JAVA代码:通过Socket读取返回的数据
下一篇: JAVA代码:通过Socket执行HTTP的POST方法
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值