名称

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”了解更多信息。

json语言

$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,307308如果可能,重定向响应。

tx公司

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.