2013-02-01 3 views
1

WCF 서비스를 사용하여 iPhone에서 웹 사이트로 파일을 업로드하려고합니다. WCF 서비스에는 iPhone에서 성공할 수있는 많은 메서드가 있습니다.JSON을 사용하여 WCF 서비스로 NSData 보내기

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

UploadFileRequest에는 FileBinaryData 및 FileName에 대한 바이트 [] 및 문자열이 각각 들어 있습니다.

문제는 NSData 개체로 파일 데이터를 가지고 있으며 JSON 호환 형식으로 변환하는 방법을 모르는 것입니다. 나는 몇 가지 제안을했지만 아무도 나를 위해 일한 적이 없다.

+0

업로드하려는 경우 파일을 업로드하는 데 왜 NSInputStream을 사용하지 않습니까? 그것은 메서드를 - (void) setHTTPBodyStream : (NSInputStream *) 당신이 정말로 파일을 업로드하려는 경우 도움이 될 inputStream있다. 그런데 - (void) setHTTPBody : (NSData *) data와 같은 메소드를 사용하여 NSMutableUrlRequest 본문에 본문을 추가 한 다음 파일에 데이터를 전달할 수도 있습니다. –

+0

고마워,하지만 WCF 바이트 []를 문자열로 변환하고 내 바이트 []를 base64 문자열로 인코딩/디코딩하는 결과가 발생했습니다. 나는 NSInputStream에 대해 몰랐지만, 다음 업데이트에서 그 부분을 조사 할 것입니다. –

답변

2

대답은 WCF 데이터 계약을 변경하고 string 유형의 데이터 멤버를 추가하는 것입니다.

아이폰 쪽 NSData를 Base64 문자열로 인코딩합니다. WCF 쪽에서 문자열을 디코딩하고 바이트 배열을 가져옵니다.

1

데이터로 표현 된 JSON 문자열을 찾으십니까? 그렇다면 ...

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

JSON이 한 번 구문 분석 한 실제 NSObject를 찾고 계십니까? 그것도 쉽습니다 ...

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

감사합니다. 그러나이 무언가를 찾고 있는데 { "FileName": "Image1.png", "FileData": ??????} –

+0

당신이이 편지를 작성하도록 도와 주어야합니까 ??????? :디 –