簡體   English   中英

在Perl中的LWP帖子中添加標題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM