2013-02-01 116 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 –