2009-05-03 7 views
3

현재 고객에 대한 데이터를 거꾸로 전달하는 비즈니스 앱용 문서 리터럴 SOAP 서비스를 수정하고 있습니다.document literal을 통해 base64로 이미지를 전송하는 대신 SOAP

스캔 한 문서 이미지를 전송하기위한 새로운 요구 사항이 확인되었습니다. 내가 가지고있는 문제는 내가 사용하는 독점적 인 언어가 SOAP 첨부 파일을 지원하지 않는다는 것이다.

전송되는 이미지는 최대 32KB 일 수 있습니다.

제가 생각할 수있는 유일한 해결책은 base64 인코딩을 사용하여 이미지를 인코딩 한 다음 XML 문서의 요소로 전달하는 것입니다.

이것은 정말 나쁜 생각처럼 느껴지지만, 나는 더 나은 것을 생각할 수 없습니다.

아이디어가 있으십니까?

편집 : 나는

답변

5

, 이미지가 파일 시스템에 원격으로 유지되지 않는다는 것을 언급, 그것은 내가 직접 연결할 수있는 능력이없는 오라클 데이터베이스에 저장됩니다 잊어 버린 경우 당신 ' XML을 데이터 전송 메커니즘으로 사용한다면 이미지를 어떤 식 으로든 인코딩해야합니다. 그 이유는 XML이 텍스트 형식이기 때문에 XML 프로세서는 텍스트 인 것처럼 바이너리 데이터를 디코딩하려고 시도합니다 (특히 다른 인코딩을 지정하지 않으면 UTF-8 인 것처럼). 또한 XML은 여러 문자 (XML 1.0의 경우 대부분 ASCII 비 인쇄물, XML 1.1의 경우 \ u0000)를 명시 적으로 허용하지 않으므로 이미지 데이터를 CDATA 섹션에 덤프하면 데이터가 손상됩니다.

편집 : XML 스키마는 "base64Binary" 유형을 정의하므로 WSDL을 적절히 정의 할 수 있어야합니다 (자동화 된 마샬 러를 사용한다고 가정). 최소한 인코딩 된 콘텐츠가 포함 된 요소에 "xsi:type" 속성을 사용해야합니다.

+0

나를 위해 작동합니다! – kingmunkyman

+0

base64Binary와 hexBinary가 모두 작동합니다. 좋은 대답입니다! –