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로 문자열/
는 희망이 도움이! ... –
[링크]에 따르면 (HTTP ://www.ibm.com/developerworks/library/x-cdata/) CDATA를 사용하는 것이 좋았지 만 작동하지 않습니다. 웹 서비스는 이전과 똑같은 문자열을받습니다./ 하지만 답장을 보내 주셔서 감사합니다. –
당신은 가장 환영합니다 ...하지만 당신은 정확한 오류가 무엇인지 말해 줄 수 있습니까 ?? –