2010-03-19 1 views
3

비누 요청에 특수 문자 (&, ')를 보내려고합니다. 나는 1.4 축을 사용하고있다. webservice 클라이언트가 weblogic 서버에 있고 webservice 서버가 ibm 메인 프레임 (COBOL 프로그램)입니다. 비누 요청에서 잘못된 XML 문자 보내기

클라이언트의 요청 데이터

내가

<![CDATA[Some Name & Some Data]]> 
로 변환있어

<![CDATA[Some Name & Some Data ]]> 로 CDATA로 묶으려고 &amp;

로 변환됩니다 특수 문자 (& 기호)를 포함

webservice 클라이언트가 wsdl에서 생성되었으므로 CDATA API를 사용하여 요청을 구성 할 수 없습니다. 문자열 값으로 설정할 수 있으며 변환됩니다.

이 문제에 대한 도움을 주시면 대단히 감사하겠습니다. 더 자세한 정보가 필요하면 알려주십시오.

+0

정확히 무엇이 문제입니까? XML 엔터티를 보냈습니다. 당신은 그들을 다룰 수 없습니까? –

+2

데이터를 XML 또는 문자열로 보냅니 까? 나는 엑시스 API를 모른다.하지만 .NET에서는 XML API 대신 문자열 API를 사용하여 XML을 구축 할 때 항상이 문제를 안고있다. 어쩌면 그건 네 문제 야. –

+0

예, COBOL 파서는 앰프 기호를 만날 때마다 전체 문자열을 읽을 수 없습니다. 예 : String "Name & Sex", cobol 파서가 전체 문자열로 파싱 할 수 없습니다. 그래서 나는 그것을 cobol 파서가 내용의 유효성을 검사하도록 지시하는 cdata에 동봉해야합니다. 내가 CDATA로 묶을 때 <! [CDATA [이름 & 성별]] >으로 변환됩니다. 다시, cobol 파서가 내용을 읽을 수 없습니다. –

답변

7

웹 서비스 클라이언트 스텁이 XML 인코딩을 수행하고 있습니다. 웹 서비스는 XML을 기대하며 유효한 XML을 전송할 수 있도록 &'을 엔티티 참조로 인코딩합니다.

XML 구문 분석기의 경우 &amp;&으로 표시되며 문제가 없습니다.

서버가 엔티티 참조를 처리 할 수없는 경우 COBOL "웹 서비스"가 수행중인 작업을 수행하지 않습니다. 따라서 여러분 (그리고 표준 기반 도구)이 WSDL로부터 클라이언트 스텁을 생성하는 것을 어렵게 만듭니다. 이것은 기본적으로 데이터 형식 및 교환에 대한 규칙을 설명하는 계약입니다.

규정 된 인터페이스 규칙을 준수하지 않는 경우 WSDL 및 SOAP 서비스를 제공하는 요점은 무엇입니까?

+0

좋아, COBOL 프로그램이 내 콘텐츠를 구문 분석 할 수없는 부분은 무시합니다. 요청에 CDATA를 인코딩하지 않고 보내려면 어떻게해야합니까? –

+0

AXIS 스텁으로 내용을 설정하고 CDATA로 지정할 수 있는지 확실하지 않습니다. 다른 사람들도 비슷한 이슈를 가진 것처럼 보입니다 : http://osdir.com/ml/axis-user-ws.apache.org/2009-12/msg00095.html 생성 된 스텁 코드를 해킹하거나 스텁을 생성하거나 SOAP 요청을 직접 작성하고 게시하는 다른 도구. –

+0

참. 또한 특정 사례를 처리하기 위해 축 스텁 (stub)을 보면서 동일하게했습니다. 아직 알아 내지 못했지만, 뭔가 발견하면 다시 게시 할 것입니다. 당신의 도움을 주셔서 감사합니다. –