gpt4 book ai didi

perl - LWP::useragent keep_alive 不工作

转载 作者:行者123 更新时间:2023-12-04 13:48:23 25 4
gpt4 key购买 nike

我正在使用以下代码使用 LWP::useragent 发布 JSON 数据。我想保持我的 session 打开并发布两个请求,但它似乎不能在 linux 机器上工作(两个 POST 请求在两个 session 而不是一个 session 中发送)。

有什么建议吗?提前致谢

#!/usr/bin/perl

use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;

open (JSON, "json3.txt") or die "$!";
$raw_string1 = do{ local $/ = undef; <JSON>;
};



my $req = HTTP::Request->new(POST => 'http://www.example.com');


$hdr1 = 'User-Agent';
$val1 = 'Java/1.7.0_45';

$hdr2 = 'Connection';
$val2 = 'keep-alive';

$hdr3 = 'Accept';
$val3 = 'application/json, application/*+json';

$hdr4 = 'Host';
$val4 = 'example.com';

$hdr5 = 'Content-Type';
$val5 = 'application/json;charset=UTF-8';


$req -> header($hdr3 => $val3);
$req -> header($hdr5 => $val5);
$req -> header($hdr1 => $val1);
$req -> header($hdr4 => $val4);
$req -> header($hdr2 => $val2);



$req->content_type("application/json");

$req->content("$raw_string1");

my $ua = LWP::UserAgent->new(keep_alive => 1);
$res = $ua->request($req);
print $res->content;
$res = $ua->request($req);
print $res->content;

最佳答案

Keep-Alive 只是建议服务器在请求后不要关闭TCP 连接,因为他们会收到更多的请求。服务器不需要遵循建议,事实上很多服务器不会将打开的 TCP 连接数保持在较低水平,这都会耗尽系统资源。

除此之外,您不需要显式设置连接和主机 header 。

我已经尝试了以下简化的示例,并且数据包捕获显示如果服务器支持它(LWP 6.05),则保持事件状态正在工作。支持意味着服务器保持连接打开并且不设置“连接:关闭” header 并且使用 HTTP/1.1 或将 HTTP/1.0 与“连接:保持事件” header 一起使用。

my $req = HTTP::Request->new(POST => 'http://www.example.com/');
$req->content_type("application/json");
$req->content("foo");

my $ua = LWP::UserAgent->new(keep_alive => 1);
$res = $ua->request($req);
print $res->content;
$res = $ua->request($req);
print $res->content;

关于perl - LWP::useragent keep_alive 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com