[英]Adding headers to a LWP post in Perl
我已經接管了一些perl代碼,並被要求在發生的LWP帖子中添加一個keep-alive標頭。
Google告訴我如何在某些設置下執行此操作,但是我看不到如何編寫此代碼。 我能找到的所有信息都是在創建LWP對象,然后創建POST和參數,然后添加標頭,然后實際發送請求的基礎上進行的,但是在我必須處理的代碼中,創建了POST,添加標頭和發送全都在一行中:
my $ua = LWP::UserAgent->new;
my $response = $ua->post( $URL, ['parm1'=>'val1']);
如何/在何處添加此設置中的標題,或者是否需要根據發現的示例進行重寫?
LWP::UserAgent
頁面告訴您如何執行此操作。 您將在用戶代理對象上設置處理程序request_prepare
。 這將在發布之前將您傳遞到請求對象中。
實際上,按照HTTP::Request::Common::POST
,您將任何內容作為鍵值對列表的'Content'
放在鍵'Content'
之前,然后是要發布的結構,都將轉換為標頭。
$ua->post( $URL, keep_alive => 1, Content => ['parm1'=>'val1']);
或沒有內容標簽,如果您將結構放在首位,則可以在以下位置放置標頭鍵/值對:
$ua->post( $URL, ['parm1'=>'val1'], keep_alive => 1 );
他們是真的要求您僅添加一個保持活動的標頭,還是要求您支持保持活動狀態(例如,同一TCP連接中的多個HTTP請求)。 在后一種情況下,您應該使用(根據LWP :: UserAgent的文檔):
my $ua = LWP::UserAgent->new( keep_alive => 10 );
$ua->get('http://foo.bar/page1');
$ua->get('http://foo.bar/page2'); # reuses connection from previous request
在這種情況下,它將最多同時保持10個連接打開。 如果僅在同一站點執行請求,則還可以將其設置為1,以便它對所有請求重用相同的TCP連接。
Keep-Alive標頭沒有任何意義,用戶代理中的keep_alive => 1的作用是建立連接緩存並添加“ Connection:keep-alive”標頭(對於HTTP / 1.1,keep-alive是隱式的,因此它可以不需要為HTTP / 1.1請求添加標頭)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.