2013-07-22 1 views
1

SOAP로 웹 서비스를 요청하는 iOS에서 앱을 개발 중이며 데이터 유형이 xsd : base64Binary (XML) 인 문제가 있습니다.Objective-C - Base64 문자열을 base64Binary (XML)

웹 서비스의 예상 필드에 따라 SOAP 봉투를 만듭니다. 형식이 xsd : string 또는 xsd : integer 또는 다른 단순 유형이면 문제가 없습니다. 그러나 xsd : base64Binary 유형을 SOAP 봉투에 추가하려고하면 웹 서비스가 데이터를 올바르게 수신 할 수 없습니다. 그것은 인코딩 문제로 보인다지만 그것을 알아낼 수 없습니다.

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema- to instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <hereTheMethod xmlns="http://heretheaddress/"> 
     <aBase64>/9j/4AAQSkZJRgAB... 
       ...RRQAUUUUAf/Z</aBase64> 
     <aBool>false</aBool> 
     <anInt>89</anInt> 
     <aDouble>0.0</aDouble> 
     <aString>Hello</aString> 
    </hereTheMethod> 
    </soap12:Body> 
</soap12:Envelope> 

그런 다음 웹 서비스가 문제없이, "89", "0.0"또는 "안녕하세요" "false"를 읽

예를 들어, 봉투처럼 보인다. 하지만 base64로 인코딩 문제로 " JFIF XExifMM * i & ..."과 같은 것을 가지고 있습니다. 내가 base64로 문자열을 빌드 할 때

NSMutableString *envelopeText = [NSMutableString stringWithFormat:@"(header)\n" 
    "<aBase64>%@</aBase64>\n" 
    "(footer)", base64String]; 

// Some code... 

NSData *envelope = [envelopeText dataUsingEncoding:NSUTF8StringEncoding]; 

// I launch the connection. 

마지막으로, 내가 UTF-8과 같은에서 인코딩하는데주의를 기울여야 : 같은 목표 - C에서

, 나는 계속

NSString *base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

공지 사항이 앱은 Android (Java) 용으로도 존재하며 동일한 웹 서비스에서 올바르게 작동합니다.

도움 주셔서 감사합니다.

PS :이 같은 Base64로 문자열/

답변

1

시도 사용 CDATA : 내 영어 죄송합니다

<aBase64><![CDATA[%@]]></aBase64>\n 
+0

는 희망이 도움이! ... –

+0

[링크]에 따르면 (HTTP ://www.ibm.com/developerworks/library/x-cdata/) CDATA를 사용하는 것이 좋았지 만 작동하지 않습니다. 웹 서비스는 이전과 똑같은 문자열을받습니다./ 하지만 답장을 보내 주셔서 감사합니다. –

+0

당신은 가장 환영합니다 ...하지만 당신은 정확한 오류가 무엇인지 말해 줄 수 있습니까 ?? –

관련 문제