use URI::Escape;#URL编码
use JSON;
#发送GET请求
use LWP::Simple;
my $tmp = "您本次操作的验证码为:$code";
my $smsmsg = uri_escape_utf8($tmp); #URL编码
my $args="http://xxx?p=".$phone."&c=$smsmsg";
my $response = get($args);
或者:
use HTTP::Request;
use HTTP::Headers;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->timeout(10); #设置超时时间10s, 默认是180s
my $header = HTTP::Headers->new( Content_Type => 'text/html; charset=utf8', ); #设置head
$request = HTTP::Request->new('GET', $url, $header);
my $response = $ua->request($request);
my $res = "";
if ($response->message ne "OK" && $response->is_success ne "1") { #出错,或者timeout了
$res = "error or timeout";
} else {
$res = decode("utf-8",$response->content);
}
#发送POST请求
use HTTP::Request;
use HTTP::Headers;
use LWP::UserAgent;
use JSON;
my $url="http://xxx?p=".$phone."&c=$smsmsg";
my $json = JSON->new();
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new('POST', $url);
my $response = $ua->request($req);
my $ret = $json->decode($response->decoded_content());
#复杂点的,PSOT内容为xml格式,请求为https
my $request_xml = create_xml_data($tmp); #构造 xml格式的字符串
my $header = HTTP::Headers->new( Content_Type => 'text/xml; charset=utf8', );
my $http_request = HTTP::Request->new( POST => "https://xxx", $header, $request_xml);
my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0, SSL_verify_mode => 0x00 });
my $response = $ua->request($http_request);
# PSOT内容为JSON格式
my $header = HTTP::Headers->new( Content_Type => 'application/json; charset=utf8', );
my $param_json_str =$json->encode($post_data); #构造JSON格式的字符串
my $http_request = HTTP::Request->new( POST => "https://xxxxx", $header, $param_json_str );
#特殊POST, https服务器需要客户端上传证书
#以微信现金红包发放API为例,https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
#证书说明:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3
#
my $header = HTTP::Headers->new( Content_Type => 'text/xml; charset=utf8', );
my $http_request = HTTP::Request->new( POST => "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack", $header, $request_xml);
my $ua = LWP::UserAgent->new(
ssl_opts => {
verify_hostname => 0,
#SSL_verify_mode => 0x00,
#SSL_ca_file => '/var/wechat/rootca.pem' # 如果客户端也要去验证微信服务器,则需要导入CA证书
SSL_use_cert => 1,
SSL_cert_file => '/var/wechat/apiclient_cert.pem', # 证书文件pem格式
SSL_key_file => '/var/wechat/apiclient_key.pem', # 证书密钥pem格式
SSL_passwd_cb => sub { $config->{mch_id} },# 证书密码
},
);
my $response = $ua->request($http_request);
#特殊POST,服务器要求Content-Type: application/x-www-form-urlencoded格式post
#必须采用下列方式,因为接口要求Content-Type: application/x-www-form-urlencoded
#参考perl网站:https://metacpan.org/pod/HTTP::Request::Common
use HTTP::Request::Common
use LWP::UserAgent;
use JSON;
方式一:
my $response = $ua->request(POST 'https://xxxxx',
[
distributionid => $ID,
distributionkey => $KEY,
request_type => 1,
send_type => 1,
industry => "互联网/电子商务",
sent_way => 3,
merchants => "xxxx",
device_id => "9823413111"
]
);
方式二:
my $params = {
distributionid => $ID,
distributionkey => $KEY,
request_type => 1,
send_type => 1,
industry => "互联网/电子商务",
sent_way => 3,
merchants => "xxxx",
device_id => "9823413111"
};
my $tmp = join( '&',
map { sprintf( '%s=%s', $_, $params->{$_} ) }
sort { $a cmp $b } keys %$params );
my $content = uri_escape_utf8($tmp); # 区别于方式一,这里需要自行做urlencode
my $header = HTTP::Headers->new( Content_Type => 'application/x-www-form-urlencoded; charset=utf8', );
my $http_request = HTTP::Request->new( POST => 'https://xxxxx', $header, $content );
my $ret;
if ($response->message ne "OK" && $response->is_success ne "1") {
$ret->{msg} = "error";
} else {
my $json = JSON->new();
$ret = $json->decode($response->decoded_content());
}
# 使用代理方式发送请求
$ua->timeout(2);
$ua->proxy(['http'], "http://$proxyAddr"); # $proxyAddr 可以是ip加端口例如 "172.1.1.1:128", 相应的也可以用https代理
# 添加http协议头
my @header = ( "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Charset" => "utf-8, iso-8859-1, utf-16, *;q=0.7",
"User_Agent" => "Mozilla/5.0 (Linux; U; Android 6.0.1; zh-cn; MI 3W Build/MMB29M)",
"X-Requested-With" => "com.android.browser",
#"X-Forward-For" => $ip
);
my $req = HTTP::Request->new( GET => $url);
$req->header(@header);
my $response = $ua->request($req);
相关推荐
该扩展包还支持其他类型的服务器,比如基于Socket的服务器(`HTTP::Server::Simple::Socket`)和基于HTTP/2的服务器(`HTTP::Server::Simple::HTTP2`)。这些不同的子类提供了不同的功能,以适应不同的应用场景。 ...
读取Cookie时,可以调用`cookie_for_request`方法,它会返回适用于特定HTTP请求的Cookie。 4. **处理HTTP请求和响应** 在发送HTTP请求时,使用`as_string`方法将Cookie Jar中的Cookie转换为HTTP请求头的格式,然后...
Perl是一种强大的脚本编程语言,尤其适用于文本处理和系统管理任务。在本场景中,我们关注的是使用Perl来统计网络流量。这个特定的Perl代码旨在从TPLINK路由器中获取流量数据,进而分析局域网中各电脑的互联网访问...
- **章节概述**:本章深入讲解了mod_perl提供的Apache请求对象(Request),这是处理HTTP请求的基础。 - **核心知识点**: - Request对象的方法和属性详解。 - 如何使用Request对象解析用户请求、获取请求参数等...
`Net::Socket`、`HTTP::Request` 和 `LWP` 等模块提供了网络通信的功能。 “perl_scripts-master”这个文件名可能表明这是一个Git仓库的主分支,里面可能包含了多个子目录和脚本文件,每个都有特定的功能。通过学习...
HTTP服务器是互联网上应用最广泛的服务器类型之一,它负责接收客户端(如浏览器)的HTTP请求,并返回相应的HTTP响应,如HTML文档、图片或其他资源。 首先,让我们理解Perl HTTP服务器的基本工作原理。HTTP服务器的...
- HTTP请求相关的环境变量:如REQUEST_METHOD(GET或POST)、QUERY_STRING(URL参数)和CONTENT_TYPE(请求数据的类型)。 - 客户端信息:REMOTE_ADDR(客户端IP地址)、HTTP_USER_AGENT(浏览器信息)等。 3. **...
总结,CGI-Perl实例起步是一个逐步学习和实践CGI编程的过程,通过分析和执行给出的Perl脚本,我们可以了解CGI程序的工作原理,掌握如何利用Perl处理HTTP请求,生成动态网页,并最终提升Web开发能力。在这个过程中,...
2. **PerlApache Object Request Broker (PLORB) 和 Apache::Registry**: 这些组件允许用户将Perl脚本作为CGI脚本处理,或以更高效的方式作为Apache模块运行。 3. **PerlApache2::Request**: 提供了一个接口,用于...
- `($statuscode, $headers, $file) = $HTTP->Request("/");`:发送HTTP请求,返回状态码、头部信息和内容。 - `binmode STDOUT; print $file;`:输出获取到的内容。 - **注意事项**: - 邮箱地址需要转义(如`...
1. Perl的LWP模块及其主要组件,如LWP::UserAgent、HTTP::Request和HTTP::Response。 2. 如何在Perl中发起HTTP请求,包括GET和POST方法。 3. HTML解析的基本概念,以及如何结合HTML解析模块从网页中提取数据。 4. ...
名称 pureproxy-Pure Perl HTTP代理服务器 ...http_proxy=http://localhost:5000/ lwp-request http://www.perl.org/ https_proxy=http://localhost:5000/ lwp-request https://metacpan.org/ 描述 这是纯Perl HTTP
2. **环境变量**:CGI程序通过读取Web服务器传递的环境变量来获取请求信息,如`REQUEST_METHOD`(GET或POST)、`QUERY_STRING`(GET请求的参数)和`CONTENT_TYPE`(POST请求的数据类型)。 3. **输入和输出**:CGI...
### PERL快速参考卡:modperl模块概览与核心功能详解 #### 标题与描述解析 标题“PERL Quick Reference Card”明确指出这是一份关于PERL编程语言的快速参考指南,旨在为用户提供关键概念、函数和用法的速查表。而...
Apache::args Versus Apache::Request::param Versus CGI::param Section 13.3. Buffered Printing and Better print( ) Techniques Section 13.4. Interpolation, Concatenation, or List Section ...
学习相关的网络库,如LWP和HTTP::Request,能够让你利用Perl进行网络通信。 9. **数据库接口**:Perl的DBI模块提供了统一的数据库接口,可以轻松连接和操作各种类型的数据库,如MySQL、PostgreSQL等。 10. **脚本...
Google Calendar Perl访问 它包含一个库( calendar_functions.pl ),该库可... get_request() access_token() is_booked() get_bookings() get_calendar_list_data() get_calendar_id() 有一个Bour
- **Request对象**:封装了HTTP请求的信息,如方法、URL、参数等。 - **Response对象**:包含了HTTP响应的信息,如状态码、头信息、内容等。 - **Action**:Controller中的方法,处理具体的业务逻辑。 4. **配置...
**gRPC for Perl 5: An In-depth Look into grpc-perl** gRPC 是一个高性能、开源的 RPC(远程过程调用)框架,它基于 Google 的 Protocol Buffers(protobuf)进行序列化和接口定义。gRPC 支持多种编程语言,包括 ...
- **SAML请求(Request)**:SP向IdP发送的,请求验证主体的XML文档。 2. **SAML绑定(Bindings)**: - HTTP Redirect:通过HTTP重定向传递SAML消息。 - HTTP POST:将SAML消息作为HTTP请求的一部分POST到目标...