新手要了解的几种网络请求方式

1、HTTP请求:HTTP是一种应用层协议,常用于Web应用中的数据传输。通过发送HTTP请求,可以使用GET、POST、PUT、DELETE等方法与服务器进行交互。

2、HTTPS请求:HTTPS是在HTTP基础上添加了SSL/TLS加密层的安全传输协议。通过HTTPS发送的请求可以提供更高的数据传输安全性。

3、gRPC请求:gRPC是一种高性能、开源的远程过程调用(RPC)框架。它使用Protocol Buffers作为接口定义语言,基于HTTP/2协议传输数据,支持多种编程语言。

4、WebService请求:Web服务是一种通过网络进行通信的软件系统,常用于不同平台和语言之间的集成。常见的Web服务协议包括SOAP和RESTful。SOAP使用XML格式进行数据交互,而RESTful使用HTTP协议,通常以JSON格式进行数据传输

5、FTP请求:FTP(File Transfer Protocol)是用于在网络上进行文件传输的协议。通过FTP请求,可以上传、下载和管理文件。

6、SSH请求:SSH(Secure Shell)是一种网络协议,用于在不安全的网络中安全地进行远程登录和文件传输。通过SSH请求,可以进行远程命令执行、文件传输和隧道代理等操作。

7、WebSocket请求:WebSocket是一种基于TCP协议的双向通信协议,允许客户端和服务器之间进行实时通信。通过WebSocket请求,可以实现实时推送和即时通信功能。

8、MQTT请求:MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,常用于物联网设备间的通信。通过MQTT请求,可以实现设备之间的发布/订阅模式通信

9、OkHttp是一个开源的HTTP客户端库,提供了简洁的API和强大的功能,用于发送和接收HTTP请求。它支持同步、异步、WebSocket等不同类型的请求,同时还提供了连接池、缓存、拦截器等功能。

下面是简单的参考示例

1、HTTP请求示例(使用Java中的HttpURLConnection):

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;public class HttpExample {public static void main(String[] args) throws IOException {URL url = new URL("http://example.com/api/users");HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;StringBuilder response = new StringBuilder();while ((line = reader.readLine()) != null) {response.append(line);}reader.close();// 处理返回的数据System.out.println(response.toString());}connection.disconnect();}
}

2、HTTPS请求示例(使用Java中的HttpURLConnection):

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;public class HttpsExample {public static void main(String[] args) throws IOException {URL url = new URL("https://example.com/api/users");HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();connection.setRequestMethod("GET");int responseCode = connection.getResponseCode();if (responseCode == HttpsURLConnection.HTTP_OK) {BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;StringBuilder response = new StringBuilder();while ((line = reader.readLine()) != null) {response.append(line);}reader.close();// 处理返回的数据System.out.println(response.toString());}connection.disconnect();}
}

3、gRPC请求示例(使用Java中的gRPC):

import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.StatusRuntimeException;
import com.example.grpc.HelloRequest;
import com.example.grpc.HelloResponse;
import com.example.grpc.HelloServiceGrpc;public class GrpcExample {public static void main(String[] args) {ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 50051).usePlaintext().build();HelloServiceGrpc.HelloServiceBlockingStub stub = HelloServiceGrpc.newBlockingStub(channel);HelloRequest request = HelloRequest.newBuilder().setName("John Doe").build();try {HelloResponse response = stub.sayHello(request);// 处理返回的数据System.out.println(response.getMessage());} catch (StatusRuntimeException e) {e.printStackTrace();}channel.shutdown();}
}

4、WebService请求示例(使用Java中的JAX-WS):

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.example.webservice.HelloService;public class WebServiceExample {public static void main(String[] args) throws Exception {URL url = new URL("http://example.com/HelloService?wsdl");QName qname = new QName("http://webservice.example.com/", "HelloServiceImplService");Service service = Service.create(url, qname);HelloService helloService = service.getPort(HelloService.class);String response = helloService.sayHello("John Doe");// 处理返回的数据System.out.println(response);}
}

5、FTP请求示例(使用Java中的Apache Commons Net库):

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;public class FtpExample {public static void main(String[] args) throws Exception {FTPClient ftpClient = new FTPClient();ftpClient.connect("ftp.example.com");ftpClient.login("username", "password");ftpClient.enterLocalPassiveMode();ftpClient.setFileType(FTP.BINARY_FILE_TYPE);ftpClient.retrieveFile("remoteFile.txt", new FileOutputStream("localFile.txt"));ftpClient.logout();ftpClient.disconnect();}
}

6、SSH请求示例(使用Java中的JSch库):

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import java.io.InputStream;public class SshExample {public static void main(String[] args) throws Exception {JSch jSch = new JSch();Session session = jSch.getSession("username", "example.com", 22);session.setPassword("password");session.setConfig("StrictHostKeyChecking", "no");session.connect();Channel channel = session.openChannel("exec");((ChannelExec) channel).setCommand("ls -l");channel.setInputStream(null);((ChannelExec) channel).setErrStream(System.err);InputStream inputStream = channel.getInputStream();channel.connect();byte[] buffer = new byte[1024];StringBuilder output = new StringBuilder();int bytesRead;while ((bytesRead = inputStream.read(buffer)) > 0) {output.append(new String(buffer, 0, bytesRead));}channel.disconnect();session.disconnect();System.out.println(output.toString());}
}

7、WebSocket请求示例(使用Java中的Java-WebSocket库):

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;public class WebSocketExample {public static void main(String[] args) {try {WebSocketClient client = new WebSocketClient(new URI("ws://example.com/socket")) {@Overridepublic void onOpen(ServerHandshake serverHandshake) {System.out.println("Connected to server");}@Overridepublic void onMessage(String message) {System.out.println("Received message: " + message);}@Overridepublic void onClose(int code, String reason, boolean remote) {System.out.println("Connection closed");}@Overridepublic void onError(Exception e) {System.out.println("Error occurred: " + e.getMessage());}};client.connect();// 发送消息client.send("Hello server!");// 关闭连接client.close();} catch (Exception e) {e.printStackTrace();}}
}

8、MQTT请求示例(使用Java中的Eclipse Paho库):

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;public class MqttExample {public static void main(String[] args) {String broker = "tcp://mqtt.example.com:1883";String clientId = "JavaClient";try {MqttClient mqttClient = new MqttClient(broker, clientId);MqttConnectOptions options = new MqttConnectOptions();options.setCleanSession(true);mqttClient.connect(options);String topic = "example/topic";String message = "Hello MQTT!";MqttMessage mqttMessage = new MqttMessage(message.getBytes());mqttClient.publish(topic, mqttMessage);mqttClient.disconnect();} catch (MqttException e) {e.printStackTrace();}}
}

9、OkHttp发送HTTP请求的示例:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;public class OkHttpExample {public static void main(String[] args) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("http://example.com/api/users").build();try (Response response = client.newCall(request).execute()) {if (response.isSuccessful()) {String responseBody = response.body().string();// 处理返回的数据System.out.println(responseBody);} else {System.out.println("Request failed");}} catch (Exception e) {e.printStackTrace();}}
}

使用OkHttp可以灵活地配置请求参数、添加请求头、设置超时时间等。同时,OkHttp还支持异步请求和WebSocket通信等高级功能,可以根据具体需求进行使用。
需要注意的是,使用OkHttp需要引入相应的依赖,例如在Maven项目中可以添加以下依赖:

<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.1</version>
</dependency>

仅供参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux docker部署深度学习环境(docker还是conda)

在深度学习中&#xff0c;避免不了在远程服务器上进行模型的训练&#xff0c;如果直接在服务器裸机的基础环境跑显然是不可取的&#xff0c;此时搭建用于模型训练的docker环境显得尤为重要。 在深度学习中&#xff0c;避免不了在远程服务器上进行模型的训练&#xff0c;如果直…

Rabbitmq入门与应用(六)-rabbitmq的消息确认机制

rabbitmq的消息确认机制 确认消息是否发送给交换机 配置 server:port: 11111 spring:rabbitmq:port: 5672host: 192.168.201.81username: adminpassword: 123publisher-confirm-type: correlated编码RabbitTemplate.ConfirmCallback ConfirmCallback 是一个回调接口&#xf…

Python学习笔记——自定义函数(基础知识)

自定义函数非常简洁有效地实现了代码的复用&#xff0c;让程序编写、阅读、测试和修改变得更加容易。 下面记录Python自定义函数的使用。 1、定义函数&#xff1a; def describe_pet(pet_name,animal_typedog):显示宠物的信息print(f"\nI have a {animal_type}.")…

仿12306校招项目-前后端运行

目录 1.git 克隆 2.设置JDK版本 3.sql脚本导入数据 4.启动中间件 5.运行后端 6.运行前端 1.git 克隆 打开 IntelliJ IDEA&#xff0c;菜单栏顶部找到 Git -> Clone 选项。找到 Clone 这个按钮输入 gitgitee.com:nageoffer/12306.git或者https://gitee.com/nageoffer/…

C# CAD交互界面-模态窗体与非模态窗体调用方式

运行环境Visual Studio 2022 c# cad2016 一、模态窗体调用方式&#xff1a; 当一个模态窗体打开时&#xff0c;它会阻塞主窗体的所有输入&#xff0c;直到关闭该模态窗体为止。例如&#xff0c;弹出一个对话框让用户必须完成某些操作后才能继续使用主程序。 [CommandMethod(&q…

C++正则表达式笔记

最近翻了翻正则表达式的一些资料&#xff0c;做个记录。 1、微软官方 <regex> 函数 | Microsoft Learn 2、正则表达式语法简介 正则表达式语法简介 - 简书 3、正则表达式基础语法大全 正则表达式基础语法大全_正则表达式语法大全-CSDN博客 4、练习 &#xff08;1…

HarmonyOS - 实现多设备协同开发实战教程~

前言 现在随着个人设备越来越多&#xff0c;越来越需要多个设备之间相互感知和连接&#xff0c;设备和设备之间可以相互联动&#xff0c;形成互联互通的场景&#xff0c;而搭载HarmonyOS的设备恰好可以满足这一点 。下面通过开发一个HarmonyOS的多端分布式表白应用来实现设备之…

python coding with ChatGPT 打卡第21天| 二叉树:最近公共祖先

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…

hope实验室预备役第4次测试题解

目录 1.Foreign Exchange 2.Takahashi Gets Lost 3.Sasha and the Beautiful Array 4.Sasha and the Drawing 5.Sasha and the Casino 6.Only one of two 7.村村通 8.传送门 1.Foreign Exchange 原题链接 Sample 1 InputcopyOutputcopy 4 5 7 0 3 2 2 4 3 5 25 Sample…

如何解决AI场景下的冯诺伊曼陷阱?

既然聊到冯诺伊曼陷阱在AI场景中的解决方案&#xff0c;那咱们就来个脑洞大开的比喻。假设我们正在构建一个超级智能的大脑&#xff08;AI系统&#xff09;&#xff0c;它需要处理海量的学习资料和数据——就像一位知识狂魔每天要消化成吨的信息。 传统的冯诺伊曼架构下&#x…

【AI绘画】Stable Diffusion简介_stable diffusion变现

手把手教你入门绘图超强的AI绘画&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包 &#xff08;文末可获取&#xff09; Stable Diffusion是2022年发布的深度学习文本到图像生成模型&#xff0c;它主要用于根据…

ncnn之三(补充):window环境下vs2022安装ncnn+protobuf

启动VS2022 下面的 x64 Native Tools Command Prompt for VS2022 protobuf git clone gitgithub.com:protocolbuffers/protobuf.git# 或者 下载 https://github.com/google/protobuf/archive/v3.11.2.zip cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPERelease -D…

HTML的特殊字符

HTML的特殊字符 有些特殊的字符在 html 文件中是不能直接表示的&#xff0c;例如: 空格&#xff0c;小于号(<)&#xff0c;大于号(>)&#xff0c;按位与(&)。 空格 示例代码&#xff1a; 运行结果&#xff1a; 由于html 标签就是用 < > 表示的&#xff0…

【快速搞定Webpack5】修改输出文件目录及自动清理上次打包文件(五)

介绍 默认情况下webpack打包后&#xff0c;我们的图片和js等文件都会被打包到dist目录下&#xff0c;文件多了混淆在一起一方面不利于文件的查找和管理&#xff0c;另外一方面看上去也不美观。 所以今天我们学习的内容就是控制输出后的文件进入不同的目录。 一、配置 新增4…

Java根据byte[]内容获取文件类型

输出啊 1、添加pom依赖 <properties><java.version>1.8</java.version><tika.version>1.26</tika.version><jmimemagic.version>0.1.5</jmimemagic.version></properties> <!-- 文件类型检测 --><dependency…

cpptrace 库介绍

cpptrace 是一个C 开源库&#xff0c; 简单试了下&#xff0c;我的发现和结论&#xff1a; 还不能通过 brew install 安装最方便方式仍然是 git clone 源码后&#xff0c; CMakeLists.txt 里&#xff0c; add_subdirectory() 方式使用: add_subdirectory("/path/to/cppt…

BioTech - 大型蛋白质复合物的组装流程 (CombFold)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136187314 CombFold是用于预测大型蛋白质复合物结构的组合和分层组装算法&#xff0c;利用AlphaFold2预测的亚基之间的成对相互作用。CombFold的组…

MES系统的功能有哪些?

阅读本文&#xff0c;你将了解&#xff1a;一、MES系统是什么&#xff1b;二、MES系统的功能&#xff1b;三、MES系统的使用场景与案例分析&#xff1b;四、如何更高效地利用MES系统。 这是我们公司正在使用的MES系统&#xff0c;已为大家搭建好模板了&#xff0c;无需下载&…

日常问题:解决远程服务调用后采用fastjson进行类型字段转换大小写匹配问题

摘要 在使用 JSON 序列化工具时。或者是通过远程服务调用的过程中接收到其他服务的响应体时&#xff0c;我们常常遇到一个问题&#xff1a;默认情况下&#xff0c;字段的首字母会被转换成小写。但在某些场景下&#xff0c;我们需要返回的 JSON 格式的参数字段首字母保持大写。本…

C#面:怎样理解静态变量

静态变量是在类中声明的一种特殊类型的变量&#xff0c;它与类的实例无关&#xff0c;而是与整个类相关联。 静态变量在整个程序运行期间只有一个实例&#xff0c;无论创建了多少个类的实例。 可以通过类名直接访问静态变量&#xff0c;而不需要创建类的实例。 静态变量的特…