2010-04-20 39 views
5

Có quá nhiều thông tin về cách tạo phản hồi nhiều phần hoặc thực hiện tải lên nhiều tệp. Tôi dường như không thể tìm thấy bất kỳ thông tin nào về cách xử lý phản hồi http đa phần. Đây là một số đầu ra IRB từ một phản ứng http đa tôi đang làm việc với.Làm cách nào để xử lý các phản hồi http đa phần trong Ruby Net: HTTP?

>> response.http.content_type 
=> "multipart/related" 
>> response.http.body[0..2048] 
=> "\r\n------=_Part_3_806633756.1271797659309\r\nContent-Type: text/xml; charset=UTF-8\r\nContent-Transfer-Encoding: binary\r\nContent-Id: <A0FCC4333C6D0FCA346B97FAB6B61818>\r\n\r\n<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:runReportResponse soapenv:encodingStyle="http://www.w3.org/2003/05/soap-encoding" xmlns:ns1="http://192.168.1.200:8080/jasperserver/services/repository"><ns2:result xmlns:ns2="http://www.w3.org/2003/05/soap-rpc">runReportReturn</ns2:result><runReportReturn xsi:type="xsd:string">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;operationResult version=&quot;2.0.1&quot;&gt;\n\t&lt;returnCode&gt;&lt;![CDATA[0]]&gt;&lt;/returnCode&gt;\n&lt;/operationResult&gt;\n</runReportReturn></ns1:runReportResponse></soapenv:Body></soapenv:Envelope>\r\n------=_Part_3_806633756.1271797659309\r\nContent-Type: application/pdf\r\nContent-Transfer-Encoding: binary\r\nContent-Id: <report>\r\n\r\n%PDF-1.4\n%\342\343\317\323\n3 0 obj 
+0

phản hồi.http.body [0..2048] .split ('\ r \ n') hoặc có thể .split (/ (?: \\ r \\ n) {1,2} /) sẽ đặt mỗi một phần của phản hồi thành một mảng. Bạn có thể đặt nó vào một băm với một chút công việc phụ, có lẽ một số đoạn mã này sẽ giúp: http://snippets.dzone.com/posts/show/302 Tất cả đều phụ thuộc vào những gì bạn thực sự muốn để làm với phản hồi. – iain

Trả lời

0

Bạn có thể sử dụng rack để làm điều đó cho bạn, đây là chức năng tiện ích nào đó: Rack::Utils::parse_multipart. Rõ ràng bạn sẽ phải làm cho đối tượng phản hồi của bạn trông giống như một đối tượng yêu cầu Rack sẽ chấp nhận (đối tượng env).

+0

Bạn có thể sử dụng 'httpadapter' để dịch sang thứ gì đó Rack hiểu được. –

Các vấn đề liên quan