编码问题将NSData附加到Post

时间:2012-01-21 13:32:09

标签: objective-c post encoding nsdata

我在通过POST

将文件上传到服务器时遇到问题

我通过加载html文件并插入数据来构建请求体:

------WebKitFormBoundaryMAsmIFCr12izlsoH
Content-Disposition: form-data; name="token"

%@
------WebKitFormBoundaryMAsmIFCr12izlsoH
Content-Disposition: form-data; name="userfile"; filename="%@"
Content-Type: AES256/encrypted

%@
------WebKitFormBoundaryMAsmIFCr12izlsoH--
Content-Disposition: form-data; name="submit"

Datei absenden
------WebKitFormBoundaryMAsmIFCr12izlsoH--

但是要用格式插入数据字符串,它必须是一个字符串。所以我分配initWithData:数据编码NSASCIIStringEncoding导致数据无法以UTF8显示。请求的其余部分是UTF8,因此如果需要dataUsingEncoding:NSUTF8StringEncoding。这打破了数据。在错误的地方有一些字节,依此类推。所以我尝试了另一种方式,我将html分成两部分,并制作了三明治。 html,data,html不幸的是,请求现在看起来像第二个html是文件的一部分,因此文件再次被破坏。 你知道更好的方法吗? 提前致谢, 雅尼

1 个答案:

答案 0 :(得分:0)

我认为尝试使用stringWithFormat从根本上是有缺陷的。 NSString在概念上是一个Unicode数据数组,但您尝试放在一起的数据可能不是有效的Unicode。

最好将各种标题部分转换为NSData个实例,然后将这些标题与要发送的数据连接起来。