Rails request.body 获取的数据怎么处理?

chengkai1853 · 2015年11月27日 · 最后由 chengkai1853 回复于 2015年11月27日 · 13477 次阅读

从 request.body 获取的数据如下,是个 xml。但是开头和结尾的那些字符是什么啊?是我应该处理什么编码问题还是什么原因?求教!

"0\x80\x06\t*\x86H\x86\xF7\r\x01\a\x02\xA0\x800\x80\x02\x01\x011\v0\t\x06\x05+\x0E\x03\x02\x1A\x05\x000\x80\x06\t*\x86H\x86\xF7\r\x01\a\x01\xA0\x80$\x80\x04\x82\x01\x9B<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IMEI</key>\n\t<string>99 000231 753049 9</string>\n\t<key>PRODUCT</key>\n\t<string>iPhone5,2</string>\n\t<key>UDID</key>\n\t<string>e8d1b097706cb1228112a898a06fca94341ae70a</string>\n\t<key>VERSION</key>\n\t<string>13B143</string>\n</dict>\n</plist>\n\x00\x00\x00\x00\x00\x00\xA0\x82\n[0\x82\x02\xF30\x82\x02\\\xA0\x03\x02\x01\x02\x02\n\x03\xBA\x98\xD6 \x00,\tY\x0E0\r\x06\t*\x86H\x86\xF7\r\x01\x01\v\x05\x000Z1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x150\x13\x06\x03U\x04\v\x13\fApple iPhone1\x1F0\x1D\x06\x03U\x04\x03\x13\x16Apple iPhone Device CA0\x1E\x17\r150921025747Z\x17\r180921025747Z0\x81\x831-0+\x06\x03U\x04\x03\x16$B82C799B-8301-441A-A64C-61711E434FF71\v0\t\x06\x03U\x04\x06\x13\x02US1\v0\t\x06\x03U\x04\b\x13\x02CA1\x120\x10\x06\x03U\x04\a\x13\tCupertino1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x0F0\r\x06\x03U\x04\v\x13\x06iPhone0\x81\x9F0\r\x06\t*\x86H\x86\xF7\r\x01\x01\x01\x05\x00\x03\x81\x8D\x000\x81\x89\x02\x81\x81\x00\xBF\x9B\xDC\xF7\xC4z\x00\xF7K\x8A~=\xC1V\xAD\xD3\xFC{$F\xCB\xC7\x85^0\xDF3\xF4\xB2\xB6\x81\x88\"\xE4\xDC\xDFj`\xEE\xA3\xA3\x13\x84y\xF5\x7F\xBE\xD90c\x8D\xD0\xEEN\xE7\xE7YU!\xDC\x84f\xD3\xB6\x11\vF\x7F\xD3\xA9-U\xFD\x93\x18\xBB\x1C\xC5\xECs\xACRm\x85^\xE4\b}\x7F:$\xCB\xEB.\a)\xD8\xD3o\xAC\x88\xFA\xE2{\xF3\xE9\xE4\r\xAB\x99\xBDz\xD9\x13\xDB\xF84\x04h\xD29\x95Dn;)\xF4\xE7\x02\x03\x01\x00\x01\xA3\x81\x950\x81\x920\x1F\x06\x03U\x1D#\x04\x180\x16\x80\x14\xB2\xFE!#D\x86\x95jy\xD5\x81&\x8Es\x10\xD8\xA7L\x8Et0\x1D\x06\x03U\x1D\x0E\x04\x16\x04\x14\xDFJ\x98\xA7\xE9\xF0<\xC4-\x98\e?\xEFz\x81Jy,\xC2\xBB0\f\x06\x03U\x1D\x13\x01\x01\xFF\x04\x020\x000\x0E\x06\x03U\x1D\x0F\x01\x01\xFF\x04\x04\x03\x02\x05\xA00 \x06\x03U\x1D%\x01\x01\xFF\x04\x160\x14\x06\b+\x06\x01\x05\x05\a\x03\x01\x06\b+\x06\x01\x05\x05\a\x03\x020\x10\x06\n*\x86H\x86\xF7cd\x06\n\x02\x04\x02\x05\x000\r\x06\t*\x86H\x86\xF7\r\x01\x01\v\x05\x00\x03\x81\x81\x00\x87W\xEAO\r\x98\x89u\x01m\xA3\xBA\x97\x8E\xF7EY)K(t+\f1\x19S\x01\x83z\xEB\x19g\xF3b\x03\xA5{t\xB8\xB1\xF8\xBE\x9C\xA7s\xAE\x176\vz\xF7\x12L\xC3\\\xDC*\xE6{}\x89\xD8*3\xEA\xAFC\x90?@\xDC]\x8B\xFC\xAE\x04\x06H\xF9[\x9A\xB8\x1E\n\x05\x06\x8FF\xA4\xC4d\x86\x1D\xE1\xAFb\xBB\xC1&\x90'\x9C'I\xE5\fd\xB3;\xC1+\xB4\xA8x\x85\x8F\xEE\xF2X\x9Ce\xD0\xE6\x10\t\x05\xB9\xDC0\x82\x03i0\x82\x02Q\xA0\x03\x02\x01\x02\x02\x01\x010\r\x06\t*\x86H\x86\xF7\r\x01\x01\x05\x05\x000y1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1&0$\x06\x03U\x04\v\x13\x1DApple Certification Authority1-0+\x06\x03U\x04\x03\x13$Apple iPhone Certification Authority0\x1E\x17\r070416225446Z\x17\r140416225446Z0Z1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x150\x13\x06\x03U\x04\v\x13\fApple iPhone1\x1F0\x1D\x06\x03U\x04\x03\x13\x16Apple iPhone Device CA0\x81\x9F0\r\x06\t*\x86H\x86\xF7\r\x01\x01\x01\x05\x00\x03\x81\x8D\x000\x81\x89\x02\x81\x81\x00\xF1\x94J\xC9\xEA\xBAZ\x18`\xAD\xCB\xA2MMNT\x19i\x17Y\af\xCB\x97\xE8f\x9AG_F\xAEgz\xB5JsT\xB1\xCB\x04\xF6\xBD6\xB8\fU8\x8A\x84\x831Re\xF93\xE1\x97w\x9C+L&\xB0%?\xE92\xAA{\bt\x94\xEC\xC1K8\x1DgN\bR\x94Z\x8BY\xA3\\\xD7\x93\xF4\xA0\xFEU\x85\xBBLF\x97^n\xB2wE/g\\\xBC\v\x18\xBFY\xB9l\x86\xF7*uv\xD2\x19q\xF4)c\xB9%\v\xAF\x02\x03\x01\x00\x01\xA3\x81\x9E0\x81\x9B0\x0E\x06\x03U\x1D\x0F\x01\x01\xFF\x04\x04\x03\x02\x01\x860\x0F\x06\x03U\x1D\x13\x01\x01\xFF\x04\x050\x03\x01\x01\xFF0\x1D\x06\x03U\x1D\x0E\x04\x16\x04\x14\xB2\xFE!#D\x86\x95jy\xD5\x81&\x8Es\x10\xD8\xA7L\x8Et0\x1F\x06\x03U\x1D#\x04\x180\x16\x80\x14\xE74*.\"\xDE9`k\xB4\x94\xCEw\x83a/1\xA0|508\x06\x03U\x1D\x1F\x0410/0-\xA0+\xA0)\x86'http://www.apple.com/appleca/iphone.crl0\r\x06\t*\x86H\x86\xF7\r\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00w]\xCFgzLV+\xA4Tw\xBDYH<\x1E\xE9\xBE\xD0\x8F\xF4\x90r\xAF\x8E\x1C\x15w\xF2\f\xC0iW\xC9N\xC3\x85F\x16v6\xB6_\xFC\xEA\x8F\xB5\xB6\xE0\n\xB9\xED\xD1\n\x9Bw\xEA\xAB\x12\xB9\\!U\x19\x8EG#G\x11\xB1\xD1\r\xC93\xFB\x97\x14\xA2\x894X\x8Fi\xA5=\xE7ax)\xFE\x93\xA4\xF9\xCBE8^\xBE4\x15|\x16oi\xD6\xA8!u\x02\x02.v\x18/U\xBCe\xBE\xA71Ro\x19\xCF\xBC\x83x\x9D\t\x16\x8B\xD7B\x1C\x8E\xE5\xF2\xD4\x1D\x12\xC2@[,\x01\xB7\xFC\a\x88\xBC\xAD\x86,\x05HXN\xCAU%\xCCU\xA4\x82%\xB6F)t\x84R \x04@\xE3\xD1\xCD\xBC\xA2\xB8\x878\xF31/\xCE\x84\xA4)T\xAC>8!\x19\xC6\x9BBU\xE3v\xA66\xDD\xB7\xDB\xB3\x8B^\xF9\xA1Z?\xBB\xA0v\x02\xB2\x80[^\xEE\xE9q\a!\xD0\xCC9\xEE\xDCo}\xE9yR:L=y[\x83\b\xA7$\x0Fn\x9F(\xAEU\xDE\xFA\xD0<$0\x82\x03\xF30\x82\x02\xDB\xA0\x03\x02\x01\x02\x02\x01\x170\r\x06\t*\x86H\x86\xF7\r\x01\x01\x05\x05\x000b1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1&0$\x06\x03U\x04\v\x13\x1DApple Certification Authority1\x160\x14\x06\x03U\x04\x03\x13\rApple Root CA0\x1E\x17\r070412174328Z\x17\r220412174328Z0y1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1&0$\x06\x03U\x04\v\x13\x1DApple Certification Authority1-0+\x06\x03U\x04\x03\x13$Apple iPhone Certification Authority0\x82\x01\"0\r\x06\t*\x86H\x86\xF7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0F\x000\x82\x01\n\x02\x82\x01\x01\x00\xA3\x1E\xBE\xF0G\xC0\xB4\x9E\x10[F\xA4\xB8!\xB8O\x86!p(E`\\\x1C\xC3\xC8\ndc\x88\xFB\xFCi\xEE\xF8T\xFC\xE9[\xB7\x06N\x04/\xC3k3\xAFDL\xEAK\x80\t\xB4\x87\xF6[\xB4\xFDd\xDD\xB3r\xE0\x13\xB3\xFD\x17\xD9\xBC\xE7\xA8\xED\xC2\x8Ca\xC2*\xF9\xEC\xCE\xA5^\xD6i\xEBd\v\x8D\b\x8F\xB8\xA0PF\t\xDC\x19\xE4\xE5\xB0\x94m\xBB\xF7\x99\x98\xC4\xE8\x9BAN\xD4\xF1e\xE3\eRz\xDC\xE8\x03\xD9n\x1D\xDA\x10U\x86\xA4)XI\f\xEAG\xD7\x1543\xF6\xC0\xA0DJp\xBE,\xB5*07\x8C.\x15\xEB\xD1\xE4l\x978UV\xB15+X\xEAD\xA3&\x85\xEE\xC8fJ\xE4\xCF\x89\xF0=c\xAD)\xDE\xAD\xBAZ\xB3\xDC\xA5\xA3\x9A\xA7\tN\x80\x165e\xA4\x85\rc{>c\x8A\xDA}JF\xEC\xA39\x184\xB9\xC6(e\x18\xBC\x13`\x9C\x7FW\xAC\x14\xC9\x89\xED\xA1\xB6\x87hR\xB6\x84N\xB8\xC8\x83\xEC\xF9\x9E\x19\xAB\xB3\xC1\v\x86\xC7\x9F\x02\x03\x01\x00\x01\xA3\x81\x9C0\x81\x990\x0E\x06\x03U\x1D\x0F\x01\x01\xFF\x04\x04\x03\x02\x01\x860\x0F\x06\x03U\x1D\x13\x01\x01\xFF\x04\x050\x03\x01\x01\xFF0\x1D\x06\x03U\x1D\x0E\x04\x16\x04\x14\xE74*.\"\xDE9`k\xB4\x94\xCEw\x83a/1\xA0|50\x1F\x06\x03U\x1D#\x04\x180\x16\x80\x14+\xD0iG\x94v\t\xFE\xF4k\x8D.@\xA6\xF7GM\x7F\b^06\x06\x03U\x1D\x1F\x04/0-0+\xA0)\xA0'\x86%http://www.apple.com/appleca/root.crl0\r\x06\t*\x86H\x86\xF7\r\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00\x1D\xD1\xD5{\xDDtN\xD7\x17\xFC\x82-\f\x99\x9B^Br\xF2i\xDC\xD5k^\r\fkK>{\x14%\xDE\xB3\x94\xE8\xA0\xFA\x0F\x80\x89\xF2\x17=\x00\x02\xA2\x91\x91\xBEtW\xDC\xAF\x9A\x9F\xA1\n}0\xBE\x00*\xCC!Y\xEB\xFDI\xACnu\x19\xE8\x9Az\x03\xD1\x86\xF6\xE7\xF6\xB0\x0EKI\xFA\xA3\xB7A\xBA\xD7\xD1\xE3V\xA1}\x83\xAB\x97\xAE\xF8QJ&\xC1\x85B\x13&\x8D\x03Tf\x10^`\x84\x05\x121+kT\xC0\xA0\xC8A\xBCT\x1E\xE7T\xAD\x13\x00\xD2J\xC7\xBB\xC1\x8A\xAF\x81\b\x8E\xF0F\n\xBF'\xA6\xBE\xDC\xCF9:\x80p\x19#2\xA3kf]\x9EM\xA8GI\xB2{E\xB5Q3\xA7tg\tN\xB6loH\xF7,\xB93\x05DkE\xBEtKo\xB2\x86\x91\xB4>%(%\x9E\xB3\xC2Q\x86\xFCO\xE5\xAF;\xAA\xBBD,\x01I\xE2t\xB34\xFAD\xEF\x14\xC2\x11\xF2-\x19\x1AQ\x89\xD3\bJAlXV\xDE\x9B:\xE1\x05W\xE5b\xCF\xD2\x0F1\x82\x01m0\x82\x01i\x02\x01\x010h0Z1\v0\t\x06\x03U\x04\x06\x13\x02US1\x130\x11\x06\x03U\x04\n\x13\nApple Inc.1\x150\x13\x06\x03U\x04\v\x13\fApple iPhone1\x1F0\x1D\x06\x03U\x04\x03\x13\x16Apple iPhone Device CA\x02\n\x03\xBA\x98\xD6 \x00,\tY\x0E0\t\x06\x05+\x0E\x03\x02\x1A\x05\x00\xA0]0\x18\x06\t*\x86H\x86\xF7\r\x01\t\x031\v\x06\t*\x86H\x86\xF7\r\x01\a\x010\x1C\x06\t*\x86H\x86\xF7\r\x01\t\x051\x0F\x17\r151127013644Z0#\x06\t*\x86H\x86\xF7\r\x01\t\x041\x16\x04\x14\xA6\xDB\xAF.\x8D\xB3\xEE\xEA0HgfU\x80+\xF9iX\x06<0\r\x06\t*\x86H\x86\xF7\r\x01\x01\x01\x05\x00\x04\x81\x80\x1E\x85yB\xC8\xBC;z\xFCg\xFE\xDB)\xAA\x9F\xC4\xAE\xC94o\xCFR\x83\f\r\xCDt\xAC\t\xBE\xB1s\xF1\xA1\xC8\xAA\xEA\x98y\xFF\xBB\xE8\xCFqj\xF0\x05j\xDF'GW\xAE{\x91\x93\xE2\x0F~X[k\xEB\xC8n^\x00\x04+|\xEEA`D6{\xF0\xF1\xC8J\x9C\xD0\xE0\xFD\x03,'\xF2\x9F\xC6\xB6\xF4\xF9\xF5\xEA\x179\xB3~:4\x18(\xC5-\x86\xC8\xFF\xDC\xA6DZ\xD2\x17\xC7\xC1\x1A\xA7\xB5b'_(\x0F\x81\x91m7\x00\x00\x00\x00\x00\x00"

目测是一个 binary 的plist文件吧。你贴的数据好像不完整。

#1 楼 @santochancf 是个 plist 了,request.body 是 StringIO. 我获取request.body.string获取到得字符串就是上面的,方法有误么?

你是如何上传 xml 的?在 textarea 中直接贴文本?还是通过 multipart 的 表单,通过 <input type="file"/> 方式上传的?

#3 楼 @lgn21st 不是我自己上传的,我从苹果哪里获得的数据呢。request.body.string的编码是 Encoding:ASCII-8BIT,是不是和编码有关系啊?

#4 楼 @chengkai1853 Encoding:ASCII-8BIT 说明字符串是以二机制的方式传输的,你需要以二进制方式处理。

你可能需要把 StringIO 还原成原始文件,试试下面这样处理:

File.open(Rails.root.join("tmp", "footer.xml"), 'wb') {|f| f << request.body.string }

#5 楼 @lgn21st 通过这种方式获的文件还是不正常

0€    *†H†÷
 €0€10    +0€    *†H†÷
 €$€‚›<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>IMEI</key>
    <string>99 000231 753049 9</string>
    <key>PRODUCT</key>
    <string>iPhone5,2</string>
    <key>UDID</key>
    <string>e8d1b097706cb1228112a898a06fca94341ae70a</string>
    <key>VERSION</key>
    <string>13B143</string>
</dict>
</plist>
 ‚
[0‚ó0‚\ 
º˜Ö ,   Y0
   *†H†÷
0Z10   UUS10U

Apple Inc.10UApple iPhone10UApple iPhone Device CA0
150921025747Z
180921025747Z0ƒ1-0+U$B82C799B-8301-441A-A64C-61711E434FF710    UUS10    UCA10U Cupertino10U

Apple Inc.10
UiPhone0Ÿ0
   *†H†÷
0‰¿›Ü÷Äz÷KŠ~=ÁV­Óü{$FËDž^0ß3ô²¶ˆ"äÜßj`„yõ¾Ù0cÐîNççYU!܄fÓ¶FÓ©-Uý“»Åìs¬Rm…^ä}:$Ëë.)ØÓo¬ˆúâ{óéä
«™½zÙÛø4hÒ9•Dn;)ô磁•0’0U#0€²þ!#D†•jyՁ&ŽsاLŽt0UßJ˜§éð<Ä-˜?ïzJy,»0Uÿ00Uÿ 0 U%ÿ0++0
*†H†÷cd
0
   *†H†÷
‡WêO
˜‰um£º—Ž÷EY)K(t+1Sƒzëgób¥{t¸±ø¾œ§s®6z÷LÃ\Ü*æ{}‰Ø*3ê¯C?@Ü]‹ü®Hù[š¸
F¤Äd†á¯b»Á&'œ'Iåd³;Á+´¨x…îòXœeÐæ  ¹Ü0‚i0‚Q 0
   *†H†÷
0y10   UUS10U

Apple Inc.1&0$UApple Certification Authority1-0+U$Apple iPhone Certification Authority0
070416225446Z
140416225446Z0Z10  UUS10U

Apple Inc.10UApple iPhone10UApple iPhone Device CA0Ÿ0
   *†H†÷
0‰ñ”JÉêºZ`­Ë¢MMNTiYf˗èfšG_F®gzµJsT±Ëö½6¸U8Š„ƒ1Reù3á—wœ+L&°%?é2ª{t”ìÁK8gNR”Z‹Y£\דô þU…»LF—^n²wE/g\¼¿Y¹l†÷*uvÒqô)c¹%¯£ž0›0Uÿ†0Uÿ0ÿ0U²þ!#D†•jyՁ&ŽsاLŽt0U#0€ç4*."Þ9`k´”Îwƒa/1 |508U10/0- + )†'http://www.apple.com/appleca/iphone.crl0
   *†H†÷
‚w]ÏgzLV+¤Tw½YH<é¾Ðôr¯ŽwòÀiWÉNÅFv6¶_üꏵ¶à
¹íÑ
›w꫹\!UŽG#G±Ñ
É3û—¢‰4Xi¥=çax)þ“¤ùËE8^¾4|oiÖ¨!u.v/U¼e¾§1Roϼƒx ‹×BŽåòÔÂ@[,·üˆ¼­†,HXNÊU%ÌU¤‚%¶F)t„R @ãÑͼ¢¸‡8ó1/΄¤)T¬>8!ƛBUãv¦6Ý·Û³‹^ù¡Z?» v²€[^îéq!ÐÌ9îÜo}éyR:L=y[ƒ§$nŸ(®UÞúÐ<$0‚ó0‚Û 0
   *†H†÷
0b10   UUS10U

Apple Inc.1&0$UApple Certification Authority10U
Apple Root CA0
070412174328Z
220412174328Z0y10  UUS10U

Apple Inc.1&0$UApple Certification Authority1-0+U$Apple iPhone Certification Authority0‚"0
   *†H†÷
‚0‚
‚£¾ðGÀ´ž[F¤¸!¸O†!p(E`\ÃÈ
dcˆûüiîøTüé[·N/Ãk3¯DLêK€  ´‡ö[´ýdݳrà³ýÙ¼ç¨íŒaÂ*ùìÎ¥^Öiëd¸ PF  Üä尔m»÷™˜Äè›ANÔñeãRzÜèÙnÚU†¤)XIêG×43öÀ DJp¾,µ*07Œ.ëÑäl—8UV±5+XêD£&…îÈfJäωð=c­)Þ­ºZ³Ü¥£š§ N€5e¤…
c{>cŠÚ}JFì£94¹Æ(e¼`œW¬É‰í¡¶‡hR¶„N¸Èƒìùž«³Á†ÇŸ£œ0™0Uÿ†0Uÿ0ÿ0Uç4*."Þ9`k´”Îwƒa/1 |50U#0€+ÐiG”v   þôk.@¦÷GM^06U/0-0+ ) '†%http://www.apple.com/appleca/root.crl0
   *†H†÷
‚ÑÕ{ÝtN×ü‚-™›^BròiÜÕk^
kK>{%Þ³”è ú€‰ò=¢‘‘¾tWܯšŸ¡
}0¾*Ì!YëýI¬nuèšzцöçö°KIú£·Aº×ÑãV¡}ƒ«—®øQJ&Á…B&Tf^`„1+kTÀ ÈA¼TçT­ÒJÇ»ÁŠ¯ŽðF
¿'¦¾ÜÏ9:€p#2£kf]žM¨GI²{EµQ3§tg N¶loH÷,¹3DkE¾tKo²†‘´>%(%ž³ÂQ†üOå¯;ª»D,Iât³4úDïÂò-Q‰ÓJAlXVޛ:áWåbÏÒ1‚m0‚i0h0Z10  UUS10U

Apple Inc.10UApple iPhone10UApple iPhone Device CA
º˜Ö ,   Y0 + ]0  *†H†÷
   1    *†H†÷
0  *†H†÷
   1
151127033253Z0#    *†H†÷
   1¦Û¯.³îê0HgfU€+ùiX<0
   *†H†÷
€¾½!Hl…2!žÖ¶3àsl¢ñà×úpÀàe݌”eQ•ƒOŽzÞ3ÐHmnR)€Ä_ˆ#:ª—â¯ü³>•Ì`®.Œ‘Ñ%¤¡T4Íþó¸YWíÖ¡ž÷­OÒ%c6ͅ(å Ã`\…çÈ@§šÂE2šîÓ+GBù/]'jç

用浏览器打开会出现

This page contains the following errors:

error on line 1 at column 1: Encoding error
Below is a rendering of the page up to the first error.

无法解析

#6 楼 @chengkai1853

  1. 检查确认数据是不是拿全了
  2. 拿全了用 UTF-8 来解析

#7 楼 @leiz_me StringIO 怎么操作啊?怎么确保数据拿完了?

收到的请求头的accept-encoding:gzip, deflate,可能是数据没拿完,请问这种 post 的数据?

我用

File.open(Rails.root.join("tmp", "footer.xml"), 'wb') do |f|
        while request.body.eof? == false 
          f << request.body.read 
        end
      end

去获取 StringIO 数据,说明数据已经完结了吧?写出来的文件用浏览器打开error on line 1 at column 1: Encoding error,是编码问题么?

#10 楼 @chengkai1853 试试 request.body.read.force_encoding("UTF-8") 有没有用?

#11 楼 @fogisland 试过了,并没有什么用。我现在用正则单独取出了 plist 的那段,勉强能用,但是还是不知道这是什么原因

需要 登录 后方可回复, 如果你还没有账号请 注册新账号