标签: lwp

如何从LWP :: Simple的getstore()确定下载速度和数量?

使用perl模块LWP :: Simple时,有一种简单的方法可以确定单个getstore()调用下载的速度和数量吗?这对于观察大文件下载的状态很有用.

在我的头脑中,一种方法是:

  1. 存储当前时间(time0)
  2. 在新进程中运行getstore
  3. 轮询已知的目标文件
    • 下载的数量将是当前文件大小(大小)
    • 下载速度会(size/current_time - time0)

我想知道是否有更简单的方法.

欢迎替代建议(也许我应该使用不同的模块?)

perl download lwp

2
推荐指数
1
解决办法
1558
查看次数

如何在不使用:content_file选项的情况下将响应作为文件处理?

示例代码:

my $ua = LWP::UserAgent->new;  
my $response = $ua->get('http://example.com/file.zip');
if ($response->is_success) {
    # get the filehandle for $response->content
    # and process the data
}
else { die $response->status_line }
Run Code Online (Sandbox Code Playgroud)

我需要将内容作为文件打开,而不事先将其保存到磁盘.你会怎么做?

perl file lwp lwp-useragent

2
推荐指数
1
解决办法
1409
查看次数

如何使用Perl和仅LWP :: UserAgent更新我的Twitter状态?

我正在尝试通过Twitter API和OAuth更新我的状态.

我被困在最后一步,状态更新.这是我的代码.

标题:

$ua->default_header('Content-Type' => "application/x-www-form-urlencoded");
$ua->default_header('oauth_signature' => "$signature");
$ua->default_header('Authorization' => '"OAuth realm="Twitter API"');
$ua->default_header('oauth_consumer_key' => "blablabla");
$ua->default_header('oauth_nonce' => "$nonce");
$ua->default_header('oauth_signature_method' => "HMAC-SHA1");
$ua->default_header('oauth_timestamp' => "$epoch");
$ua->default_header('oauth_token' => "$token_final");
$ua->default_header('oauth_version' => "1.0");
Run Code Online (Sandbox Code Playgroud)

使用lwp useragent 发布到http://api.twitter.com/1/statuses/update.json的帖子:

'oauth_signature'=>"$signature",
'status'=>'Bientot',
'oauth_consumer_key'=>'blabla',
'oauth_signature_method'=>'HMAC-SHA1',
'oauth_nonce'=>"$nonce",
'oauth_timestamp'=>"$epoch",
'oauth_token'=>"$token_final",
'oauth_version'=>"1.0", 
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

HTTP/1.1 401 Unauthorized
Cache-Control: no-cache, max-age=300
Connection: close
Date: Wed, 29 Sep 2010 14:36:48 GMT
Server: hi
Vary: Accept-Encoding
WWW-Authenticate: Basic realm="Twitter API"
Content-Length: 75
Content-Type: application/json; charset=utf-8
Expires: Wed, 29 Sep 2010 …
Run Code Online (Sandbox Code Playgroud)

twitter perl oauth lwp

2
推荐指数
1
解决办法
1037
查看次数

使用LWP:UserAgent时,$ response-> is_success返回空白

我正在使用LWP::UserAgent如下

my $ua = LWP::UserAgent->new;

my $response = $ua->request ( ...);

if ( $response->is_success() )
{
...
}
print $response->is_success();
Run Code Online (Sandbox Code Playgroud)

我面临的问题is_success()是返回空白.我期待1(TRUE)或0(FALSE).我在这做错了什么?是print的语句吗?

perl cpan http lwp

2
推荐指数
1
解决办法
3998
查看次数

Perl:使用HTTP :: Request :: Common发布身份验证

我试图用来HTTP::Request::Common做一个URL的帖子.不幸的是,它似乎不适用于身份验证,我不得不切换回普通ol' HTTP::Request.如果我不需要身份验证,我可以通过这种方式完成所有事情:

use HTTP::Request::Common;

my $browser = LWP::UserAgent->new;

$browser->request (
    POST $url, 
    Content => [
        Name => $name,
        Address => $address,
    ],
);
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于身份验证,我不得不回到HTTP::Request:

use HTTP::Request;

my $browser = LWP::UserAgent->new;
my $request = HTTP::Request;
my $request->authentication_basic($user, $pass);
my $request->method("POST");
my $request->url($url);

# Create Content Byte String
my $uri = URI->new('http://');  #URL isn't needed, just the object
$uri->form_query(Name => $name, Address => $address);
my $content = $uri->query;

$request->content($content);

# Set the headers for the content
$request->header( …
Run Code Online (Sandbox Code Playgroud)

perl httprequest lwp

2
推荐指数
1
解决办法
8201
查看次数

不带命名参数的 REST HTTP DELETE

我想要做:

 curl -X DELETE -d '{"name":"flowx"}' 'http://somewhere/wm/staticflowentrypusher/json'
Run Code Online (Sandbox Code Playgroud)

在 Perl 中:

 my $browser = LWP::UserAgent->new;
 my $url = 'http://somewhere/wm/staticflowentrypusher/json';
 $browser->delete($url, '{"name":"flowx"}');
Run Code Online (Sandbox Code Playgroud)

但我得到:

 Illegal field name '{"name":"flowx"}' at /home/user/perl5/lib/perl5/HTTP/Request/Common.pm line 115
Run Code Online (Sandbox Code Playgroud)

perl lwp

2
推荐指数
1
解决办法
2092
查看次数

Perl LWP POST上传的进度指示器

我正在研究Perl脚本,该脚本使用POST请求上传大文件.我的问题是,是否有可能有状态输出,因为上传大文件可能需要一些时间与我的互联网连接.

我的意思是像状态栏一样

$| = 1;
print "\r|---------->                   | 33%";
print "\r|-------------------->         | 66%";
print "\r|------------------------------| 100%\n";
Run Code Online (Sandbox Code Playgroud)

这是我的上传代码:

my $ua=LWP::UserAgent->new();
$file = "my_big_holyday_vid.mp4";

$user = "username";
$pass = "password";

print "starting Upload...\n";
$res = $ua->post(
                  "http://$server",
                  Content_Type => 'form-data',
                  Content =>[
                    fn => ["$file" => $file],
                    username => $user,
                    password => $pass,
                  ],
                );
print "Upload complete!\n"
Run Code Online (Sandbox Code Playgroud)

perl upload statusbar lwp

2
推荐指数
1
解决办法
1469
查看次数

如何在perl中以json格式输出LWP请求

我没有得到如何以json格式解析LWP po​​st请求的输出.我使用下面的代码: -

use LWP::UserAgent;
use JSON;

my $ua = LWP::UserAgent->new;
my $server_endpoint = URL;                   #URL contains actual URL

# set custom HTTP request header fields
my $req = HTTP::Request->new( POST => $server_endpoint );
$req->header( 'content-type' => 'application/json' );
$req->header( 'Accept'       => 'application/json' );

# add POST data to HTTP request body
my $post_data = '{ "auth": {"tenantName":"****", "passwordCredentials": {"username":"****","password":"****"} }}';
$req->content($post_data);

my $resp = $ua->request($req);
if ( $resp->is_success ) {
    my $message = $resp->decoded_content;
    print "Received reply: $message\n\n\n";
    $tojson …
Run Code Online (Sandbox Code Playgroud)

perl lwp

2
推荐指数
1
解决办法
3983
查看次数

Perl LWP:UserAgent如何添加标题?

我是一个新的Perl程序员,试图使用LWP:UserAgent将curl请求转换为Perl脚本。

curl请求示例为:

curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" -H "Postman-Token: eb3955f1-a7b5-65d7-f5c0-808c7aba6cef" "https://10.51.10.26/10/download?startTime=1461698250&endTime=1461698252&cNat=True&cNatShowDst=True&tuplesFile=True&summarizeTuples=False"
Run Code Online (Sandbox Code Playgroud)

和我的PERL等效:

use LWP::UserAgent;
my $browser = LWP::UserAgent->new;
my $url = 'https://10.51.10.26/10/download';
my @headers = (
   "startTime" => $queryStart, 
   "endTime" => $queryEnd, 
   "cNat" => "True", 
   "cNatShowDst" => "False", 
   "tuplesFile" => "False", 
   "summarizeTuples" => "False",
   "Authorization" => "Basic YWRtaW46YWRtaW4",
   "Cache-Control" => "no-cache", 
   "Postman-Token" => "eb3955f1-a7b5-65d7-f5c0-808c7aba6cef", 
);
Run Code Online (Sandbox Code Playgroud)

结果是 - HTTP::Response=HASH(0x27884bc)

这是添加标题的正确方法吗?

perl curl lwp

2
推荐指数
2
解决办法
8128
查看次数

Perl https 代理问题

我似乎无法通过代理获取 https。

例子:

require LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->proxy('https', 'https://proxy:8080');
# $ua->proxy(['https'], 'https://proxy:8080'); # Fails
# $ua->env_proxy; # This also fails.

my $response = $ua->get('https://aws.amazon.com/cloudwatch/');

if ($response->is_success) {
    print $response->decoded_content;  # or whatever
}
else {
    die $response->status_line;
}
Run Code Online (Sandbox Code Playgroud)

结果:

500 无法连接到 aws.amazon.com:443(超时)位于 test.pl 第 17 行。

但如果我尝试使用curl(还有wget)使用相同的代理,它就可以正常工作。

$ curl --head --proxy https://proxy:8080 https://aws.amazon.com/cloudwatch/
HTTP/1.1 200 Connection established

HTTP/1.1 200 OK
Server: Server
Date: Thu, 08 Dec 2016 16:42:01 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 214187
Run Code Online (Sandbox Code Playgroud)

Perl 版本

$ perl …
Run Code Online (Sandbox Code Playgroud)

perl lwp lwp-useragent

2
推荐指数
1
解决办法
3281
查看次数

标签 统计

lwp ×10

perl ×10

lwp-useragent ×2

cpan ×1

curl ×1

download ×1

file ×1

http ×1

httprequest ×1

oauth ×1

statusbar ×1

twitter ×1

upload ×1