Java 在oracle db和objective c之间传输blob数据

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

我正在尝试通过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中检索,字节数组分配给NSData
  • 然后将NSData写入文件并打开该文件
  • 问题:我无法通过objective-c打开文件,当我在mac中物理打开文件时,它包含一些垃圾字符。任何人都可以告诉我,表示word文档的java字节数组是否可以转换为objective-c可识别的数据类型,并最终在objective-c应用程序中打开word文档

    以下是您在objective-c端阅读的代码:

    注意:代码中的“sourceDoc”是字节数组的键

    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文档,里面有以下字符z
    n6“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。非常感谢。不客气。我正准备回答这是你的问题。