Rust - 简单使用 reqwest 发起 HTTP 请求

2023-10-27

一、reqwest 是什么

reqwest 是一个简单而强大的 RUST HTTP 客户端,用于浏览器异步 HTTP 请求。支持 xmlHttpRequest, JSONP, CORS, 和 CommonJS 约束。

二、使用 reqwest 发起请求

1. 在 Cargo.tom 添加依赖

[dependencies]
reqwest = { version = "0.11.11", features = ["json", "cookies"] }
tokio = { version = "1", features = ["full"] }

2. main.rs

use std::collections::HashMap;
use std::error::Error;
use std::sync::Arc;
use reqwest::{cookie::Jar, Url};
use tokio;

#[tokio::main]
async fn main() {
   let data = request_data().await.unwrap();
   println!("{:?}", data);
}

async fn request_data() -> Result<String, Box<dyn Error>> {
    let mut map = HashMap::new();
    map.insert("q", "设置");
    map.insert("page", "1");
    map.insert("pageSize", "10");
    map.insert("ctoken", "69_e6Yu_Zr_G8bLWy1KQNxaK");
    println!("map: {:?}", map);
    // 设置cookie
    let cookie = "ctoken=69_e6Yu_Zr_G8bLWy1KQNxaK";
    let url = "https://www.iconfont.cn".parse::<Url>().unwrap();
    let jar = Jar::default();
    jar.add_cookie_str(cookie, &url);

    let client = reqwest::Client::builder()
        .cookie_provider(Arc::new(jar))
        .build()
        .unwrap();

    let res = client
        .post("https://www.iconfont.cn/api/icon/search.json")
        .json(&map)
        .send()
        .await?
        .text()
        .await?;
    Ok(res)
}

三、文章参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust - 简单使用 reqwest 发起 HTTP 请求 的相关文章

  • 如何增加asp classic的请求接受限制

    我从java小程序向asp classic发送post请求 我在此请求中发送非常大的数据 即 csv 数据 当此请求中的字符数增加并超过 138000 时 asp 不接受该请求 java 小程序给出 500 错误 所以有人可以告诉我如何才能
  • 如何与超级请求处理程序共享不可变的配置数据?

    我正在尝试用 Rust 开发一个基于超级的服务器应用程序 有一个 INI 文件保存诸如绑定 IP 数据库等配置 我不想在每个请求上解析 INI 文件 并且可以保留配置数据直到服务器重新启动 如何向请求处理程序提供已解析数据的结构 我尝试过几
  • HttpWebRequest vs Webclient(特殊场景)

    我知道这个问题之前已经回答过thread https stackoverflow com questions 1694388 webclient vs httpwebrequest httpwebresponse 但我似乎找不到详细信息 在
  • 如何消除 Rust 中特征的歧义?

    我想使用write fmt两种不同类型的对象上的方法 use std fmt Write use std io Write fn main let mut a String new let mut b std fs File create
  • Android - API 请求

    我开发了一个应用程序 它也在 iPhone 上 问题出在 api 请求上 我为所有请求设置了超时 有时会出现 30 60 秒的中断 看起来这个应用程序执行了几个请求 然后就中断了 一直超时 大约 45 秒后一切正常 不知道是服务器问题还是安
  • iOS WKWebView 处理文件下载

    我面临以下问题 在 Web 界面中 文件下载是通过锚标记触发的 如下所示 a href bla blabla a 虽然 Safari 浏览器可以处理此请求并打开一个对话框来处理文件 但 WKWebView 将此视为普通链接并且不对其执行任何
  • 错误[E0554]:#![功能]可能无法在稳定发布通道上使用无法使用货物安装赛车

    我正在尝试使用 Cargo 安装 Racer 所以我执行了命令cargo install racer在终端中并导致错误 error E0554 feature may not be used on the stable release ch
  • 从 PCAP 嗅探重建数据

    我试图通过 libpcap 嗅探 HTTP 数据 并在处理 TCP 有效负载后获取所有 http 内容 标头 有效负载 根据我的讨论编写 http 嗅探器 或任何其他应用程序级嗅探器 https stackoverflow com ques
  • rust-analyzer 未能发现 vscode 中的工作区

    我开始学习 Rust 语言 但有一个问题rust analyzervscode 扩展名 它不提供代码完成 如链接所示 https rust analyzer github io manual html magic completions h
  • 如何为命令 stdout 添加 [stdout] 和 [stderr] 前缀?

    使用命令结构 https doc rust lang org std process struct Command html 如何向 stdout 和 stderr 缓冲区添加前缀 我希望输出看起来像这样 stdout things are
  • Rust 为什么要费心“let”? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对 Rust 很感兴趣 所以我开始阅读 Rust 网站上的 Rust 编程指南 发现变量是通过以下方式声明的 let x i32 5 这意味着
  • 如何下载 Rust API 文档?

    有没有办法可以下载 Rust 的 API 库文档或生成它们 我可以在 Rust 源中找到的唯一文档位于src docs https github com rust lang rust tree master src doc 我正在运行夜间构
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • 在 Rust 中,太大的位移是否是未定义的行为?

    当您运行此代码时 allow exceeding bitshifts fn main const NUMBER u64 0b 10101010 fn print shift i u32 println b NUMBER gt gt i pr
  • 使用 flash 或 java servlet 将麦克风数据从浏览器上传到服务器的教程? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 There was a question on how to get data from a microphone on a client
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future
  • `SystemTime::now` 是否受夏令时影响?

    在时间 T 我调用SystemTime now duration since UNIX EPOCH 在时间 T 10 当夏令时开始时 我调用相同的调用 我可以预期这两个实例之间会出现任何奇怪的行为吗 SystemTime本身完全独立于时区
  • put方法中的Angularjs文件上传不起作用

    我有一个简单的待办事项应用程序 我试图在其中上传照片和单个待办事项 现在我已经创建了这个工厂函数来负责待办事项的创建 todosFactory insertTodo function todo return http post baseUr
  • 如何在火箭响应器中转发来自 reqwest::blocking::Body 的数据?

    我可以使用 reqwest 请求一个 PNG 文件 我可以通过它保存到文件中copy 我想转发这张图片作为火箭的回应 我不知道如何将响应内容传递到那里 我尝试使用Content ContentType PNG response 但我不知道如
  • 是否可以将请求标头添加到 CORS 预检请求中?

    我有一个从外部服务器 不是服务器 访问 API 的网站 为网站提供服务 通过简单的XmlHttpRequest 见下文 那个API 需要将用于访问服务的 API 密钥添加为请求标头 然而 正如这些CORS https developer m

随机推荐

  • 在mac系统中安装node

    在mac系统中安装node js 这里使用软件包安装方式 首先打开node js的中文网站http nodejs cn download 选择16 15 0版本 下载完成之后 点击安装 出现如下页面 点击继续 点击继续 点击同意软件许可协议
  • Error Domain=NSCocoaErrorDomain Code=3840 “JSON text did not start with array or object and option t

    问题 问题是表现在移动端客户端上 移动端调用服务端接口 返回错误如下 Error Domain NSCocoaErrorDomain Code 3840 JSON text did not start with array or objec
  • pip 批量安装和卸载package

    文章目录 1 pip批量安装package 2 pip批量卸载package 3 pip换国内源 1 pip批量安装package 将需要安装的包保存在aa txt中 cd到aa txt所在目录 运行 pip install r aa tx
  • AndroidUtil - 基于Android网络连接状态全面深度检查

    一个通用的完整网络连接状态检查工具 netState ping dns http 异步执行 使用低级api 保持独立通用 public class NetworkChecker private static final String TAG
  • mysql-proxy

    mysql proxy简介 mysql proxy是mysql官方提供的mysql中间件服务 上游可接入若干个mysql client 后端可连接若干个mysql server 它使用mysql协议 任何使用mysql client的上游无
  • 2013年8月28日星期三(8-2,裁剪Cohen_sutherland算法)

    这节就是只保留裁剪区域内的像素 这个例子用直线表示 分为4种情况 1 直线完全在裁剪区外 不用处理 2 直线完全在裁剪区之内 也无需改动 直接光栅化 3 直线的一个端点在裁剪区之外 必须进行裁剪 4 直线的两个端点都在裁剪区之外 但部分在裁
  • 两个div重叠显示

    想要将兄弟div元素进行重叠 将父元素position设置为relative 子元素position设置为absolute 使用z index设置谁显示在上层 谁显示在下层
  • TLSv1.2协议了解

    首先明确TLS的作用三个作用 1 身份认证 通过证书认证来确认对方的身份 防止中间人攻击 2 数据私密性 使用对称性密钥加密传输的数据 由于密钥只有客户端 服务端有 其他人无法窥探 3 数据完整性 使用摘要算法对报文进行计算 收到消息后校验
  • poj 3980 取模运算

    Description 编写一个C函数mod int n int m 实现取模运算 Input 输入包含多行数据 每行数据是两个整数a b 1 lt a b lt 32767 数据以EOF结束 Output 于输入的每一行输出a b Sam
  • SQLServer JDBC 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    网上有不少人遇到过使用jdbc连接sqlserver出错的情况 错误信息为 Caused by com microsoft sqlserver jdbc SQLServerException 驱动程序无法通过使用安全套接字层 SSL 加密与
  • 大数据开发教程——MapReduce原理及编程

    什么是MapReduce MapReduce是一种编程模型 用于大规模数据集 大于1TB 的并行运算 概念 Map 映射 和 Reduce 归约 是它们的主要思想 都是从函数式编程语言里借来的 还有从矢量编程语言里借来的特性 MapRedu
  • protobuf版本冲突问题解决

    1 proto caffe pb h 17 2 error error This file was generated by an older version of protoc 如果你装有anaconda 以及tensorflow 或者在
  • 【软件测试】—— 基础知识总结

    目录 基础篇 1 什么是软件测试 2 软件测试的目的 3 软件测试与软件开发的区别 概念篇 1 什么是需求 2 需求是软件测试的依据 3 测试用例 4 什么是BUG 5 开发模型 5个模型 1 瀑布模型 2 螺旋模型 3 4 增量模型 迭代
  • 继续谈下调用约定

    继续谈下调用约定 今天写了个DLL是用extern C 导出的 以前一直用 def文件 结果出现了以下错误 无法解析的外部符号 declspec dllimport int cdecl SetStatus int imp SetStatus
  • 原生js jquery设置输入框不可编辑,attr、prop对比

    1 设置输入框不可编辑 点击switch按钮 输入框可编辑和不可编辑切换 p E mail p
  • 期权是什么?一分钟带你玩转期权策略!

    很多人问我期权是什么 这个问题怎么回答呢 首先期权是一种交易模式 如同股票期货一样 但它又不同于股票和期货 因为它有自己的交易规则和特性 期权更多是一种工具 可以做空大盘对冲下跌风险 下文解答期权是什么 一分钟带你玩转期权策略 本文来自 期
  • 使用Python的requests库与chatGPT进行通信

    前言 在人工智能领域 自然语言处理模型如OpenAI GPT 3 5 Turbo具有广泛的应用 虽然官方提供了Python库来与这些模型进行交互 但也有一些人更喜欢使用requests库来自定义请求和处理响应 比如现在很多第三方LLM都提供
  • epoll 相对于select的优势

    epoll 相对于select的优势 分类 LinuxKnowHow 819 0 举报 收藏 这个问题至今才去查 是因为我需要用的地方真的不是很多 学习了那么多年 不知道自己究竟学了什么 觉得自己的优势就是针对特定知识点都熟悉点 一整套的软
  • 微信小程序支付踩坑notify_url(支付回调)

    最近做了微信小程序支付 支付成功之后发现notify url回调地址竟然没有访问 检查了无数次代码 下单结果里面的回调地址看了又看 都没有错啊 把回调地址复制出来到浏览器上面 外网也是可以访问的啊 然后我再分析 为什么以前公众号支付都没有出
  • Rust - 简单使用 reqwest 发起 HTTP 请求

    Rust 简单使用 reqwest 发起 HTTP 请求 一 reqwest 是什么 二 使用 reqwest 发起请求 1 在 Cargo tom 添加依赖 2 main rs 三 文章参考 一 reqwest 是什么 reqwest 是