Objective c 将NSData发送到Post的编码问题

Objective c 将NSData发送到Post的编码问题,objective-c,post,encoding,nsdata,Objective C,Post,Encoding,Nsdata,通过POST将文件上载到服务器时遇到问题 我通过加载html文件并插入数据来构建请求正文: ------WebKitFormBoundaryMAsmIFCr12izlsoH Content-Disposition: form-data; name="token" %@ ------WebKitFormBoundaryMAsmIFCr12izlsoH Content-Disposition: form-data; name="userfile"; filename="%@" Content-Ty

通过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--
但要插入格式为fia字符串的数据,它必须是字符串。因此,我alloc initWithData:data encoding NSASCIIStringEncoding导致数据不能以UTF8显示。请求的其余部分是UTF8格式的,因此如果需要数据,请稍后使用Encode:NSUTF8StringEncoding。这会破坏数据。在错误的位置上有一些字节,等等。所以我尝试了另一种方法,我把html分成两部分,然后做了一个三明治。不幸的是,请求现在看起来像第二个html是文件的一部分,所以文件再次被破坏。 你知道更好的方法吗? 提前感谢,,
Jannes

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


您最好将不同的头部分转换为
NSData
实例,然后将它们与要发送的数据连接起来。

谢谢您的回答。答案是:在数据和html的其余部分之间需要一个换行符。如下所示:NSString*break=@“\n”;NSData*breakData=[BreakDataUsingEncoding:NSUTF8StringEncoding];[postbody appendData:fileData];[postbody appendData:breakData];