2013-02-01 41 views
1

我想使用WCF服务将文件从iPhone上传到网站。 WCF服务有很多方法,除了这个之外,我可以从iPhone成功调用这些方法。使用JSON发送NSData到WCF服务

[OperationContract] 
[WebInvoke(Method = "POST", 
    RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Bare, 
    UriTemplate = "UploadFileBinary")] 
UploadFileResponse jsonUploadFile(UploadFileRequest request); 

UploadFileRequest分别包含FileBinaryData和FileName的byte []和字符串。

的问题是,我有一个文件数据NSData对象,不知道如何将它转换成JSON格式兼容。我尝试了一些建议,但都没有为我工作。

+0

嘿,你为什么不使用NSInputStream上传文件,如果你要绑定上传。它有一个方法 - (无效)setHTTPBodyStream:(NSInputStream *)inputStream这将真正帮助你,如果你想上传一个文件。 (NSData的*)的数据,然后使数据文件:(无效)setHTTPBody - 顺便说一句,你也可以在身体的使用方法类似追加到NSMutableUrlRequest体。 – 2013-02-01 22:31:55

+0

谢谢,但我最终转换WCF的byte []字符串和编码/ []为Base64字符串我的字节进行解码。我不知道NSInputStream,但我可能会在下一次更新中看到它。 –

回答

2

答案是更改WCF数据协定并添加一个字符串类型的数据成员。

上的WCF侧iPhone侧编码的NSData为base64字符串

解码串并获得字节数组。

1

您是否在寻找由您的数据表示的JSON字符串?如果是这样的话......

NSString *string = [NSString stringWithUTF8String:[data bytes]]; 

或者你是否在寻找一种解析过的JSON代表的真实NSObject?这也很容易...

NSError *error; 
id parse = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; 
+0

感谢,但我期待这样的事情 {“文件名”:“Image1.png”,“的FileData”:??????} –

+0

你要帮我填写这些??????? :d –