2013-11-26 31 views
0

我正在開發一個perl程序,以多部分MIME的形式將數據POST到一個web服務。我從服務器收到以下數據。我用HTTP::Request::Common模塊提交數據。在Perl中解析多部分/表單數據

我該如何解析perl中的以下數據。

_content:

--AaioCdPr 
Content-Disposition: form-data; name="AAA" 

TMP 
--AaioCdPr 
Content-Disposition: form-data; name="BBB" 

TEST 
--AaioCdPr 
Content-Disposition: form-data; name="BBBBCC" 

TEST 
--AaioCdPr 
+1

你收到的數據是否有CGI請求?如果是這樣,CGI模塊會這樣做。 – ikegami

+0

我不認爲CGI可以在這裏做任何事情。我使用下面的代碼片段來發布數據。 my $ usrag1 = LWP :: UserAgent-> new(); my($ req1,$ response1); $ REQ1 = POST( http://www.example.com/webservice, CONTENT_TYPE => '的multipart/form-data的', 含量=> [ 類型=> 「XXXX」, 模式\t => 「XXXXX」 ] ); $ response1 = $ usrag1-> request($ req1); –

+0

來自webservice的響應爲: - ($ response1的內容) '_rc'=>'200', '_headers'=>祝福(Servlet 2.5; JBoss-5.0 /JBossWeb-2.1', 'XXXXXX'=> 1 },'HTTP :: Headers'), '_msg'=>'OK', '_request'=>祝福({0}'_content'=>' --xYzZY 內容處置:形狀數據;名稱= 「AAAA」 BBBBBB --xYzZY 內容處置:形狀數據;名稱= 「CCCCCC」 DDDDDDDD --xYzZY –

回答

0

NB4: 「你嘗試過什麼」

好像你可以拉你想用正則表達式的信息:(?:(\w+)\r\n)?--AaioCdPr\r\nContent-Disposition: form-data; name="(\w+)"

$1將包含字符串,如「TMP」或「TEST」和$2將包含類似「BBB」或「BBBBCC」

您的字符串
+0

嗨喬納森,我試過這個正則表達式和模式匹配,發現工作。我想知道是否有任何標準方法來解析來自此表單的數據。因爲我從服務器返回了帶有完整http標題和內容的變量$ response。 –

+0

respose like'_rc'=>'200','_headers'=> bless({'x-powered-by'=>'Servlet 2.5; JBoss-5.0/JBossWeb-2.1','XXXXXX'=> 1} ,'_msg'=>'OK','_request'=> bless({'_content'=>'--xYzZY Content-Disposition:form-data; name =「AAAA」BBBBBB - -xYzZY Content-Disposition:form-data; name =「CCCCCC」DDDDDDDD --xYzZY - IAM ABLE TO PROCESS _content,但正在尋找替代品 –

+0

哈哈,對於我來說,看到發生了什麼事,評論。如果這個正則表達式做了你想要的,我建議你接受這個答案,併發佈一個新的問題與標題,以及你正在從中提取的東西。 Perl對於字符串處理來說是一個非常棒的語言,我們甚至可以爲您的問題找到一條解決方案。我只需要看清楚它的定義。 –