HTTP网络请求

【鸿蒙HarmonyOS】网络请求http代码实现 在网络开发中,HTTP请求是必不可少的一部分。在鸿蒙(HarmonyOS)开发中,同样需要处理网络请求,无论是与后端服务器交互还是获取外部API的数据。下面是对鸿蒙开发中涉及到的HTTP模块——`http`模块,以及一个常用的第三方库——`axios`模块。 阅读详情

HTTP请求常见方法


1.HTTP请求的常见方法:
  • GET
    • 所有参数拼接在URL后面,并且参数之间用&隔开
    • 没有请求体
    • 一般用来**查询数据**
  • POST
    • 所有参数都放在请求体中
    • 一般用来修改、增加、删除数据
2.创建HTTP请求
  • GET
// 请求路径
NSString *urlString = @"http://www.baidu.com?name=张三&pwd=123";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

// 创建URL
NSURL *url = [NSURL URLWithString:urlString];

// 创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

// 设置请求方法(默认就是GET请求)
request.HTTPMethod = @"GET";
  • POST
// 请求路径
NSString *urlString = @"http://www.baidu.com/图片";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

// 创建URL
NSURL *url = [NSURL URLWithString:urlString];

// 创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

// 设置请求方法
request.HTTPMethod = @"POST";

// 设置请求体
request.HTTPBody = [@"name=张三&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];
3.使用NSURLConnection发送HTTP请求
  • 发送同步请求
// 这个方法是阻塞式的,会在当前线程发送请求
// 当服务器的数据完全返回时,这个方法才会返回,代码才会继续往下执行
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
  • 发送异步请求-block
// 会自动开启一个子线程去发送请求
// 当请求完毕(成功\失败),会自动调用handler这个block
// handler这个block会放到queue这个队列中执行
+ (void)sendAsynchronousRequest:(NSURLRequest*) request
                          queue:(NSOperationQueue*) queue
              completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;
  • 发送异步请求-delegate
//1>创建NSURLConnection对象
// startImmediately==YES,创建完毕后,自动发送异步请求
- (instancetype)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately;
// 创建完毕后,自动发送异步请求
- (instancetype)initWithRequest:(NSURLRequest *)request delegate:(id)delegate; 
// 创建完毕后,自动发送异步请求
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate; 

//2> 发送请求
[connection start];

// 3>遵守NSURLConnectionDataDelegate协议,实现协议中的代理方法

// 3.1当接收到服务器的响应时就会调用
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;

// 3.2每当接收到服务器返回的数据时就会调用1次(数据量大的时候,这个方法就会被调用多次)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;

// 3.3当服务器的数据完全返回时调用(服务器的数据接收完毕)
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;

// 3.4当请求失败的时候调用
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
  • 取消请求
[connection cancel];

HTTP请求常见方法数据相关

1.NSString和NSData的互相转换
  • NSString -> NSData转化
NSData *data = [@"www.baidu.com" dataUsingEncoding:NSUTF8StringEncoding];
  • NSData -> NSString转化
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

2. JSON数据解析
  • JSON数据(NSData) -> OC对象(Foundation Object)转化数据类型:
//JSON数据返回类型
- {} -> NSDictionary @{} 
- [] -> NSArray @[]
- "jack" -> NSString @"jack"
- 10 -> NSNumber @10
- 10.5 -> NSNumber @10.5
- true -> NSNumber @1
- false -> NSNumber @0
- null -> NSNull
  • JSON数据(NSData) -> OC对象(Foundation Object)转化方法:
// 利用NSJSONSerialization类
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

// NSJSONReadingOptions枚举
    - NSJSONReadingMutableContainers = (1UL << 0)
        - 创建出来的数组和字典就是可变
    - NSJSONReadingMutableLeaves = (1UL << 1)
        - 数组或者字典里面的字符串是可变的
    - NSJSONReadingAllowFragments
        - 允许解析出来的对象不是字典或者数组,比如直接是字符串或者NSNumber
  • OC对象(Foundation Object)-> JSON数据(NSData)转化方法:
// 利用NSJSONSerialization类
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

3.格式化服务器返回的JSON数据

4.JSON- Model模型第三方框架
  • 字典转模型框架
    • Mantle
      • 所有模型都必须继承自MTModel
  • JSONModel
    • 所有模型都必须继承自JSONModel
  • MJExtension(日常使用)
    • 不需要强制继承任何其他类
Flutter中的http网络请求 前言 本篇介绍Flutter中网络请求相关api的使用,Flutter在Flutter engine中提供了一个sky_engine开发工具包,其包含了一个_http的库,该库中有封装的http请求相关的各种操作类。本文我们将介绍_http相关操作类的使用和基于_http封装的三方dio网络库的使用。 自带网络库_http _http库中的http.dart文件中封装的HttpClient类是我们... 阅读详情

相关推荐

Qt http网络请求

#include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QSslSocket> #include <QSslConfiguration> #include <QTime> #include <QApplication> #include <QDebug> 方式一 QUrl u

Cong的专栏 587

Http网络请求

在JDK的 java.net 包中已经提供了访问HTTP协议的基本功能的类:HttpURLConnection。HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:// 获取服务器的响应代码。// 获取服务器的响应消息。// 获取发送请求的方法。// 设置发送请求的方法。...

m0_60623666的博客 2028

Flutter开发之Http网络请求

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

xiangzhihong8的专栏 2411

Http 请求的4种方式

1. RestTemplate RestTemplate: 是 Spring 提供的用于访问Rest服务的客户端, RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 SpringBoot中先注册bean @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } // 或者 @Bean public RestTe

Tong_zhi的博客 1956

StarUML最新版汉化与破解二合一教程:5分钟搞定永久使用

本文提供StarUML最新版的高效使用指南,涵盖从安装到深度定制的全流程优化方案。包括软件获取最佳实践、界面个性化设置、核心建模技巧、团队协作策略及性能优化建议,帮助架构师和开发团队提升UML建模效率。特别推荐版本控制集成和文档自动化输出方案,适用于各类规模的项目开发。

weixin_42530732的博客 450

COMSOL仿真分析高压直流GIS/GIL绝缘性能优化

高压直流气体绝缘设备(GIS/GIL)的绝缘性能是保障电网可靠运行的关键。通过COMSOL Multiphysics多物理场仿真,可以深入分析气固界面电场分布与电荷积聚机理。该技术结合静电场、热场和电荷传输耦合计算,能准确模拟温度梯度对SF6气体与环氧树脂界面特性的影响。工程实践中,这类仿真可优化导体结构设计、改进绝缘材料配方,并建立电场-温度关联预警模型。特别是在80℃高温工况下,仿真显示界面电荷密度会显著增加23%,这对设备安全运行具有重要指导价值。

weixin_32075843的博客 192

HTTP客户端请求工具RestTemplate

服务端访问HTTP服务随处可见!传统情况下我们都会使用Apache的HttpClient,不过Apache的封装的API非常复杂,还得自己做二次封装和管理资源的回收,因此在项目上非常推荐使用Spring提供的模板类RestTemplate发HTTP请求,RestTemplate封装了更加简单易用的API,能很大程度提升开发者的开发效率....................................

laizhenghua的博客 2711

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421

好用的在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具-ApiPost

Apipost

m0_68845084的博客 4435

基于STM32的智能火灾报警系统设计:多传感器融合与远程控制实现

本文详细介绍基于STM32单片机的智能火灾报警系统设计,采用多传感器融合技术(烟雾、温度、火焰检测)实现高精度火灾识别。系统集成远程控制与手机APP监控,通过加权决策算法降低误报率,提供多级响应策略,确保火灾预警的准确性与可靠性。

u5v6w7的博客 1102

数理金融学笔记 Chap2 二叉树模型Binomial

2 二叉树模型与期权定价 Binomial Model and Option Pricing 文章目录2 二叉树模型与期权定价 Binomial Model and Option Pricing单期二叉树模型 One-step Binomial Model风险与无风险资产单期二叉树模型与无套利条件无套利定价 No Arbitrage Pricing风险中性定价 Risk Neutral PricingDelta套期保值 Delta Hedging两期二叉树模型 Two-Step Binomial Model

weixin_66831131的博客 2387

Android之网络请求1————HTTP协议

Android之网络请求1————HTTP协议

冰炭不投day的博客 2599

MCAL中MCU的配置

MCAL配置中MCU配置,PLL计算配置,系统时钟以及各模块参数配置

dhyw12399999的博客 3794

http请求过程 Android,android HTTP网络请求回顾

1.HTTP协议了解http是一种应用层的协议,底层通过TCP来进行可靠的数据传输。HTTP是基于TCP的应用层协议,它在更高的层次封装了TCP的使用细节,使网络请求更加易用,TCP连接是因特网基于流的一种可靠连接,它为HTTP提供了一条可靠的比特传输管道。从TCP连接一端填入的字节会从另一端以原有的顺序、正确的传送过来。HTTP的7种请求方式GETPOSTDELETEPUTHEADTRACEPO...

weixin_39978350的博客 627

【Godot】【工程】中文字体与多语言(缺字/体积/打包:一次性配置到位)

本文介绍了Godot游戏开发中的中文字体配置与多语言支持方案。主要内容包括:1)中文字体的全局与局部设置;2)使用子集化技术减小字体体积;3)多语言资源管理及翻译系统实现;4)语言切换机制与控件刷新方法;5)字体回退策略优化显示效果;6)打包优化建议。文章提供了从字体导入到多语言实现的完整解决方案,帮助开发者系统性解决中文显示和多语言支持问题,同时优化资源体积和性能表现。配套案例可供学习参考。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 598

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

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

android post请求_Android HTTP 网络请求

一、网络层级协议1.1 OSI 七层网络模型标准的 OSI 网络模型包含物理层、数据链路层、网络层、传输层、会话层、表示层、应用层共七层网络结构:| 层级 | 名称 | | :-: | :-: | | 7 | 应用层 | | 6 | 表示层 | | 5 | 会话层 | | 4 | 传输层 | | 3 | 网络层 | | 2 | 数据链路层 | | 1 | 物理层 | 1.2 TCP/IP...

weixin_35785014的博客 1746

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

鸿蒙开发中HTTP网络请求

HTTP请求开发指南摘要 本文对比了原生HTTP模块(@ohos.net.http)与第三方Axios的特点,详细解析了GET/POST/PUT/PATCH/DELETE等请求方法的语义与实现,包含参数设置、响应处理及销毁流程。特别说明文件上传、HTTPS证书校验等高级功能,并给出拦截器封装、性能优化(连接复用/数据压缩)等实用方案。针对不同场景推荐:基础请求用原生模块,复杂业务用Axios,实时通信选WebSocket。附调试技巧和错误码处理建议,帮助开发者高效完成网络通信。

梦想不只是梦与想的博客 1578

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

flutter中http进行网络请求

一.flutter 网络请求的三种方式 1.HttpClient请求 实现步骤: 1).导入包 import 'dart:convert'; import 'dart:io'; 2).创建HttpClient var httpClient=HttpClient(); 3). Http连接,并获取解析url var request=await httpClient.getUrl(Uri.parse(url)); 这里可以附加参数,并通过HttpClientRequest设置请求hea.

j086924的专栏 3983

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Flutter Http网络请求详解

Http网络请求详解1. Http的请求方式简介1.1 GET请求方式1.2 POST请求方式1.3 HEAD请求方式1.4 PUT请求方式1.5 DELETE请求方式1.6 OPTIONS请求方式1.7 TRACE请求方式1.8 CONNECT请求方式2. Flutter Http网络请求实现的区别和特点 Http网络请求是一门开发语言里比较常用和重要的功能,主要用于资源访问、接口数据请求和提...

持续学习中 1万+

HarmonyOS:网络HTTP数据请求

通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。

gobelieve 2167

HTTP、SDK及网络数据请求

1.http简介 http:超文本传输协议(HTTP,HyperTextTransferProtocol)是互联网上应用最广泛的一种网络协议,所有的WWW文 件都必须遵守这个协议,设计HTTP的最初目的是为了提供发布和接受HTML页面的方法。 HTTP是...

chongxienuo3437的博客 1694

从一个HTTP请求来看网络分层原理

比如前后分离时经常遇到的要和后端协商传输数据的类型“Content-type:application/json”,这里key就是“Content-type“,value就是application/json”。为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构,每一层只与紧挨的上层或下层进行交互,将网络分层,甚至替换某一层的软件,只要层与层之间的接口保持不变。5.服务器收到请求报文之后开始,请求报文解析,生成响应数据,发送响应数据。TCP:面向连接的,可靠的,基于字节流的传输层通信协议。

weixin_56468024的博客 499

Hutool HTTP请求:轻松发起网络请求

本文介绍了如何使用Hutool工具包进行HTTP网络请求。主要内容包括:HttpUtil类提供的get和post方法用于简易请求,createGet/createPost方法支持更灵活的配置,以及如何设置超时时间解决网络延迟问题。文章提供了完整的Java代码示例,展示GET/POST请求的实现,包括基本请求、带参数请求和超时配置。这些方法简化了Java网络编程,适合获取网页内容、调用API等常见场景。

fykam的博客 1872
上一篇: CocoaPods
下一篇: js语法
XR_Code
博客等级 码龄10年 16粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值