2010-04-20 12 views
5

Ci sono così tante informazioni là fuori su come generare risposte multipart o caricare file multipart. Non riesco a trovare alcuna informazione su come elaborare una risposta http multipart. Ecco alcuni output IRB da una risposta HTTP multipart con cui sto lavorando.Come si elaborano risposte http multipart in 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

response.http.body [0..2048] .split ('\ r \ n') o forse .split (/ (?: \\ r \\ n) {1,2} /) parte della risposta in un array. Potresti inserirlo in un hash con un po 'di lavoro in più, forse alcuni di questi frammenti ti aiuteranno: http://snippets.dzone.com/posts/show/302 Tutto dipende davvero da ciò che effettivamente vuoi fare con la risposta. – iain

risposta

0

È possibile utilizzare Rack a farlo per voi, ecco la funzione di utilità che lo fa: Rack::Utils::parse_multipart. Ovviamente dovrete rendere l'oggetto di risposta simile a un oggetto di richiesta che Rack accetta (l'oggetto env).

+0

Puoi usare 'httpadapter' per tradurre in qualcosa che Rack capisce. –

Problemi correlati