Java 在oracle db和objective c之间传输blob数据
我正在尝试通过Web服务将一个blob数据从oracle db发送到objective c。 blob数据是存储在oracle db中的word文档 以下是我迄今为止所做的工作:Java 在oracle db和objective c之间传输blob数据,java,objective-c,web-services,ms-word,blob,Java,Objective C,Web Services,Ms Word,Blob,我正在尝试通过Web服务将一个blob数据从oracle db发送到objective c。 blob数据是存储在oracle db中的word文档 以下是我迄今为止所做的工作: 通过javajdbc获取blob对象 将blob对象转换为java字节数组 在普通java对象(序列化)中设置此字节数组并将其发送到web服务 Webservice将普通java对象发送到objective-c,媒体类型为application/json json对象在objective-c中检索,字节数组分配给NSD
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if ([data length] >0 && error == nil){
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSData *returnData = nil;
for(NSDictionary *billDict in jsonArray){
returnData = [NSData dataWithBytes:(__bridge const void *)([billDict objectForKey:@"sourceDoc"]) length:[[billDict objectForKey:@"sourceDoc"] length]];
break;
}
}
问题是
-[NSData dataWithBytes:length:][/code>需要一个指向实际数据的指针,但您正在从字典中向它传递一个对象。您应该使用NSLog(@“%@,[billDict objectForKey:@“sourceDoc”])检查返回的内容代码>但我希望它是base64字符串。如果是base64字符串,则可以使用以下问题中的base64解码选项之一:。如果您使用Alex Reynolds回答该问题,那么您将在上述代码中包括您创建并设置的base64解码文件头,如下所示:
returnData = [NSData base64DataFromString:[billDict objectForKey:@"sourceDoc"]];
我导入了Base64库,并执行了上述操作。我得到了一个word文档,里面有以下字符zn6“US-US-US-u-u-u-I”=QEz-u-I]| k
u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-u-,你提出的这种方法现在正在发挥作用。我犯的错误是,我将字节数组转换为字符串(在java中),而不是将原始字节数组发送到objective-c。非常感谢。不客气。我正准备回答这是你的问题。