2013-04-01 49 views
-2

我正在努力使用LWP發佈Perl數據。perl使用特殊字符的LWP POST

這裏是我的代碼

$req = POST $url, [ 
    SESSID => $sessid, 
    csrf => $csrf, 
    domainid => '1234567', 
    type => 'A', 
    default => '0', 
    record-type => 'A', 
    a-record%5B%5D => '12.12.12.12', 
    aaaa-record => '', 
    cname-record => '' 
]; 

的代碼在a-record%5B%5D明顯失敗。我如何使這個Perl兼容?

我已經試過'a-record%5B%5D'; a-record\%5B\%5D; a-record[]; a-record\[\]; a-record\%5B\%5D

從我的理解,表單字段名的確 <input id="a0" class="left" type="text" value="11.11.11.11" name="a-record[]">

+5

和'a-record []'? –

+0

好的一個米格爾。我只是嘗試過,但表單仍然沒有被目的地接受。 請讓我指出(因爲我以前沒有這麼做)'a-record%5B%5D'和'a-record []'不會在perl方面拋出錯誤,但是這種方式看起來並不像被接受。所以我不確定是否修改它會改變實際名稱? – sb0373

+1

@ sb0373你沒有使用'use strict;使用警告;'你?因爲你上面的任務有很多錯誤。例如,'aaaa-record'不是一個有效的密鑰名稱,你需要引用它。 http://stackoverflow.com/questions/8023959/why-use-strict-and-warnings – TLP

回答

2

不能使用任何東西,但普通的字母,下劃線和左側的數字,如果你不報價:

$req = POST $url, [ 
    SESSID   => $sessid, 
    csrf    => $csrf, 
    domainid   => '1234567', 
    type    => 'A', 
    default   => '0', 
    'record-type' => 'A', 
    'a-record%5B%5D' => '12.12.12.12', 
    'aaaa-record' => '', 
    'cname-record' => '' 
]; 

現在這是代碼中的語法問題。

此外,請參閱perlsyn以瞭解有關如何格式化perl代碼的提示。

+0

你好mzedeler, 謝謝你的回覆。它只在a記錄行上拋出語法錯誤。 看看實際的表單字段名稱。所以用單引號引用是左手邊允許的方式嗎?然後我從服務器端接受未被接受的POST的問題似乎在其他地方。 – sb0373

+0

如果你想發佈一個名爲''a-record []''的字段,只需用''a-record []''替換'a-record%5B%5D''。 – mzedeler

+1

當我無法確定發送的請求是否正確時(比較你所知道的工作),我通常會訴諸http://www.wireshark.org/。它像GAU-8炮一樣射擊鳥,但它很有效。 – mzedeler