Erlang发送HTTP请求(Get,Post)

2024-04-15 05:48
文章标签 http 请求 post 发送 get erlang

本文主要是介绍Erlang发送HTTP请求(Get,Post),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开发项目Erlang程序项目中 , 用到了HTTP请求 , 主要是Get和Post , 其他的类似Put和Post请求模式一样 ; 现将代码总结如下 :

发送HTTP-Get请求

inets:start(),
ReqUrl = string:join(["http://www.example.com/user?access=",binary_to_list(Access)],""),
RstGet = httpc:request(ReqUrl ),
inets:stop(),case  RstGet of{ok, {_,_,RstBody}} ->RstBody;  {error, Cause} ->Cause
end;

发送HTTP-Post请求

inets:start(),
ReqUrl = string:join(["http://www.example.com/access=",binary_to_list(Access)],""),
ParaStr = io_lib:format("phone=~s&vcode=~s",[Phone, Vcode]),
RegUsr = httpc:request(post,{ApiUrl, [],"application/x-www-form-urlencoded", list_to_binary(ParaStr)},[],[]),
inets:stop(),case  RstGet of{ok, {_,_,RstBody}} ->RstBody;  {error, Cause} ->Cause
end;

发送HTTP-Post请求 , 上传文件

format_multipart_formdata(Boundary, Fields, Files) ->
% 遍历字符参数FieldParts = lists:map(fun({FieldName, FieldContent}) ->[lists:concat(["--", Boundary]),lists:concat(["Content-Disposition: form-data; name=\"",atom_to_list(FieldName),"\""]),"", FieldContent]end, Fields),
FieldParts2 = lists:append(FieldParts),% 遍历文件参数
FileParts = lists:map(fun({FieldName, FileName, FileContent}) ->[lists:concat(["--", Boundary]),lists:concat(["Content-Disposition: form-data; name=\"",atom_to_list(FieldName),"\"; filename=\"",FileName,"\""]),lists:concat(["Content-Type: ", "application/octet-stream"]), "", FileContent]end, Files),
FileParts2 = lists:append(FileParts),
EndingParts = [lists:concat(["--", Boundary, "--"]), ""],
Parts = lists:append([FieldParts2, FileParts2, EndingParts]),
string:join(Parts, "\r\n").--- Usage:{ok,BinStream} = file:read_file("./images/avatar.png"),
Data = binary_to_list(BinStream), 
Boundary = "------WebKitFormBoundaryUscTgwn7KiuepIr1",
ReqBody = format_multipart_formdata(Boundary, [{uid,"123"}], [{avatar, "avatar", Data}]),
ContentType = lists:concat(["multipart/form-data; boundary=", Boundary]),
ReqHeader = [{"Content-Length", integer_to_list(length(ReqBody))}],inets:start(),
ParaUrl = string:join(["http://www.example.com/avatar?access_token=",binary_to_list(token)],""),
RstGet = httpc:request(post,{ParaUrl, ReqHeader,ContentType, ReqBody},[],[])
inets:stop(),case  RstGet of{ok, {_,_,RstBody}} ->RstBody;  {error, Cause} ->Cause
end;

参考资料: how to http:post file with httpc:request in erlang?

个人网站: Github , 欢迎点击给星

这篇关于Erlang发送HTTP请求(Get,Post)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904992

相关文章

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm