Mojo::UserAgent::Transactor-用户代理事务处理程序
使用Mojo::UserAgent::Transactor;#带有Accept标头的GET请求my$t=Mojo::UserAgent::Transactor->new;比如$t->tx(获取=>'http://example.com'=>{Accept=>'*/*'})->请求->to_string;#带有表单数据的POST请求说$t->tx(POST=>'example.com'=>form=>{a=>'b'})->req->to_string;#带有JSON数据的PUT请求比如$t->tx(PUT=>'example.com'=>json=>{a=>'b'})->req->to_string;
Mojo::用户代理::交易方是使用的事务构建和操作框架Mojo::用户代理.
默认情况下,这些内容生成器可用。
$t->tx(开机自检=>'http://example.com'=>形式=>{a=>'b'});
生成查询字符串,应用程序/x-www-form-urlencoded
或多部分/表单数据
内容。请参阅“tx”了解更多信息。
$t->tx(补丁=>'http://example.com'=>json=>{a=>'b'});
使用生成JSON内容Mojo::JSON。请参阅“tx”了解更多信息。
$t->tx(PUT=>'http://example.com'=>multipart=>['Hello','World!']);
生成多部分内容。请参阅“tx”了解更多信息。
Mojo::UserAgent::Transactor实现以下属性。
我的$bool=$t->已压缩;$t=$t->压缩($bool);
尝试协商响应内容的压缩并自动解压缩,默认为MOJO_GZIP(_G)
环境变量或true。
我的$generators=$t->生成器;$t=$t->生成器({foo=>sub{…}});
已注册的内容生成器,仅在默认情况下形式
,json语言
和多部分
已定义。
我的$名称=$t->名称;$t=$t->名称(“Mojolicious”);
的值用户代理
生成事务的请求标头,默认为Mojolicious(Perl)
.
Mojo::用户代理::交易方从继承所有方法Mojo::基础并实现了以下新功能。
$t=$t->add_generator(foo=>sub{…});
注册内容生成器。
$t->add_generator(foo=>sub($t,$tx,@args){…});
my($proto,$host,$port)=$t->endpoint(Mojo::Transaction::HTTP->new);
事务的实际终结点。
my($proto,$host,$port)=$t->peer(Mojo::Transaction::HTTP->new);
事务的实际对等方。
$t->promisify(Mojo::Promise->new,Mojo:;Transaction::HTTP->new);
解决或拒绝Mojo::承诺具有的对象Mojo::Transaction::HTTP对象。
my$tx=$t->proxy_connect(Mojo::Transaction::HTTP->new);
生成Mojo::Transaction::HTTP代理连接
如果可能,请求交易。
my$tx=$t->redirect(Mojo::Transaction::HTTP->new);
生成Mojo::Transaction::HTTP后续请求301
,302
,303
,307
或308
如果可能,重定向响应。
my$tx=$t->tx(GET=>'example.com');我的$tx=$t->tx(POST=>'http://example.com');我的$tx=$t->tx(GET=>'http://example.com'=>{Accept=>'*/*'});我的$tx=$t->tx(PUT=>)http://example.com'=>'内容!');我的$tx=$t->tx(PUT=>'http://example.com'=>形式=>{a=>'b'});我的$tx=$t->tx(PUT=>'网址:http://example.com'=>json=>{a=>'b'});我的$tx=$t->tx(PUT=>'https://example.com'=>多部分=>['a','b']);my$tx=$t->tx(POST=>“example.com”=>{Accept=>“*/*”}=>“Content!”);我的$tx=$t->tx(PUT=>“example.com”=>{Accept=>“*/*”}=>form=>{a=>“b”});我的$tx=$t->tx(PUT=>'example.com'=>{Accept=>'*/*'}=>json=>{a=>'b'});我的$tx=$t->tx(PUT=>“example.com”=>{Accept=>“*/*'}=>multipart=>['a','b']);
通用性强Mojo::Transaction::HTTP请求的事务生成器,支持“发电机”.
#生成并检查带有DNT头和内容的自定义GET请求说$t->tx(GET=>'example.com'=>{DNT=>1}=>'Bye!')->req->to_string;#STDOUT的流响应内容我的$tx=$t->tx(GET=>'http://example.com');$tx->res->content->unsubscribe(“读”)->on(读=>sub{say$_[1]});#从文件流式传输内容的PUT请求我的$tx=$t->tx(PUT=>'http://example.com');$tx->req->content->asset(Mojo::asset::File->new(path=>'/foo.txt'));
这个json语言
内容生成器使用Mojo::JSON用于编码,并将内容类型设置为应用程序/json
.
#包含“application/json”内容的POST请求我的$tx=$t->tx(POST=>'http://example.com'=>json=>{a=>'b',c=>[1,2,3]});
这个形式
内容生成器将自动使用查询参数GET(获取)
和头部
请求。
#带有查询参数的GET请求我的$tx=$t->tx(GET=>'http://example.com'=>形式=>{a=>'b'});
对于所有其他请求方法应用程序/x-www-form-urlencoded
使用内容类型。
#带有“application/x-www-form-urlencoded”内容的POST请求我的$tx=$t->tx(POST=>'http://example.com'=>形式=>{a=>'b',c=>'d'});
参数可以用字符集
选项。
#带有Shift_JIS编码形式值的PUT请求my$tx=$t->tx(PUT=>“example.com”=>form=>{a=>“b”}=>charset=>“Shift_JIS”);
数组引用可用于共享相同名称的多个表单值。
#表单值共享相同名称的POST请求我的$tx=$t->tx(POST=>'http://example.com'=>形式=>{a=>['b','c','d']});
带有内容
或文件
值可用于切换到多部分/表单数据
文件上传的内容类型。
#带有“multipart/form-data”内容的POST请求我的$tx=$t->tx(POST=>'http://example.com'=>form=>{mytext=>{content=>'lala'}});#多个文件共享相同名称的POST请求我的$tx=$t->tx(POST=>'http://example.com'=>形式=>{mytext=>[{content=>第一个},{content=>'第二个}]});
这个文件
值应包含要上载的文件或资产对象的路径,如Mojo::Asset::文件或Mojo::资产::内存.
#从文件流式上传的POST请求我的$tx=$t->tx(POST=>'http://example.com'=>form=>{mytext=>{file=>'/foo.txt'}});#POST请求,从资产流式上传my$asset=Mojo::asset::Memory->new->add_chunk('alala');我的$tx=$t->tx(POST=>'http://example.com'=>form=>{mytext=>{file=>$asset}});
一个文件名
值将自动生成,但也可以在必要时手动设置。哈希引用中的所有剩余值将合并到多部分/表单数据
作为标题的内容。
#带有表单值和自定义上传的POST请求(文件名和标头)我的$tx=$t->tx(POST=>'http://example.com'=>形式=>{a=>“b”,c=>“d”,mytext=>{content=>“lalala”,文件名=>“foo.txt”,“Content-Type”=>“text/plain”}});
这个多部分/表单数据
还可以通过设置内容类型
手动收割台。
#强制“multipart/form-data”my$headers={'Content-Type'=>'multipart/form-data'};我的$tx=$t->tx(POST=>'example.com'=>$headers=>form=>{a=>'b'});
这个多部分
内容生成器可用于构建自定义的多部分请求,并且不设置内容类型。
#带有多部分内容的POST请求(“foo”和“bar”)我的$tx=$t->tx(POST=>'http://example.com'=>多部分=>['foo','bar']);
类似于形式
您还可以使用内容生成器传递哈希引用内容
或文件
值以及标头。
#从文件流式传输多部分内容的POST请求我的$tx=$t->tx(POST=>'网址:http://example.com'=>multipart=>[{file=>'/foo.txt'}]);#从资产流式传输多部分内容的PUT请求my$headers={'Content-Type'=>'multipart/custom'};my$asset=Mojo::asset::Memory->new->add_chunk('lalala');我的$tx=$t->tx(PUT=>'网址:http://example.com'=>$headers=>multipart=>[{file=>$asset}]);#带有多部分内容和自定义标头的POST请求我的$tx=$t->tx(POST=>'http://example.com'=>多部分=>[{content=>“你好”,“内容类型”=>“text/plain”,“内容语言”=>“en-US”},{content=>“世界!”,“Content-Type”=>“text/plain”,“内容语言”=>“en-US”}]);
my$tx=$t->升级(Mojo::Transaction::HTTP->new);
生成Mojo::Transaction::WebSocketWebSocket握手的后续事务(如果可能)。
我的$tx=$t->websocket('ws://example.com');我的$tx=$t->网络套接字(“ws://example.com”=>{DNT=>1}=>[“v1.proto”]);
多功能Mojo::Transaction::HTTPWebSocket握手请求的事务生成器。
Mojolicious公司,Mojolicious::指南,https://mojolicious.org.