我有 .Net Web 服务响应,其中包含一个 byte[] 条目以及其他字段。数据为 PDF 文件。
我从收到的数据中提取字典: [NSJSONSerialization JSONObjectWithData]
此后,我使用以下代码将 byte[] 转换为 NSData。然后我将结果保存到磁盘(见最后一行)。
打开生成的 PDF 文件时,出现以下错误:
“找不到 PDF 标题:找不到‘%PDF’。”
NSArray *byteArray = [rootDictionary objectForKey:@"file"];
unsigned c = byteArray.count;
uint8_t *bytes = malloc(sizeof(*bytes) * c);
unsigned i;
for (i = 0; i < c; i++)
{
NSString *str = [byteArray objectAtIndex:i];
int byte = [str intValue];
bytes[i] = (uint8_t)byte;
}
NSData* data = [NSData dataWithBytes:(const void *)byteArray length:sizeof(unsigned char)*c];
//Save to disk using svc class.
NSString *localPath = [svc saveReport:data ToFile:[rootDictionary objectForKey:@"name"]];
我还尝试将 byte[] 转换为 base64 NSString(在服务端),然后在我的应用程序中返回 NSData,这可以正常工作(**大部分情况下),但我被告知这是草率的代码。
** 当同时异步拉取多个 PDF 时,其中一些作为 base64 字符串接收的报告也已损坏。
PS。如果我也必须从我的 svc 类中提供代码,请告诉我,但我认为问题不存在。
编辑: 我创建了一个新的 Web 服务方法,它以 byte[] 作为输入,然后修改了我的 iOS 应用程序以将 byteArray 变量发送回服务,并将其保存到文件中。生成的 PDF 文件是 Adobe 可读的有效文件。意味着在传输过程中没有腐败。
谢谢!