2012-04-23 3 views
1

Java에서 Soap WS가 있습니다.
여기 SOAP 요청을 인SOAP 요청. 문자열을 바이트 배열로 변환

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:his="SCC/Lis/HistoryFormatter"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <his:formatHistoryByteArray> 
     <arg0>cid:anystring</arg0> 
     </his:formatHistoryByteArray> 
    </soapenv:Body> 
</soapenv:Envelope> 

FormatHistoryByteArray.class는 *의

@XmlElement(name = "arg0", namespace = "", nillable = true) 
private byte[] arg0; 

유형

<xs:complexType name="formatHistoryByteArray"> 
    <xs:sequence> 
     <xs:element name="arg0" type="xs:base64Binary" nillable="true" minOccurs="0"/> 
    </xs:sequence> 
    </xs:complexType> 

WSDL을 .XSD 및 XSD는 JAXWS 의해 생성되는 하나 개의 필드를 갖는다.
노드의 변환 문자열의 논리를 java 코드의 byte []에 요청할 수 없습니다. 도움말 plz
cid :은 필수 접두어인지 여부입니다.

편집 : 예 , I는 자바 코드에 요구

<arg0>abcdef</arg0> 

에게 있다면 I 얻을 바이트 [] = {105, -73, 29}

WebService에이 바이트 배열을 얻는 방법 문자열에서 abcdef?

+0

귀하의 질문은 아직 명확하지 않습니다. 문자열을 byte []로 변환하려면 stringValue.getBytes()를 사용하십시오. – Bitmap

+0

WebService가 문자열을 byte []로 자동 변환하지만이 결과는 stringValue.getBytes() 결과와 다릅니다. – Ilya

+1

아니요. 'formatHistoryByteArray'에 정의 된 complexType은 base64로 인코딩 된 값입니다.'org.apache.commons.codec.binary.Base64' 또는 유사한 것을 사용하여 값을 다시 byte [] 또는 object로 디코딩합니다. – Bitmap

답변

3

String.getBytes()은 (ASCII, UTF8, ISO-8859-1 등) 특정 String의 인코딩을 반환합니다. Base 64와 다른 점이 있습니다. Base 64는 인쇄 가능한 문자로 임의의 바이트를 표시하는 방법입니다. 그래서 그들이 같은 존재가 될 이유가 없습니다.

본 튜토리얼의 기본 64 및 XML : http://www.xml.com/pub/a/2003/02/26/binaryxml.html 섹션 2.1을 살펴보십시오. base64로 비트는 다음과 같습니다 : 등 photo는 base64로 요소

<m:data xmlns:m='http://example.org/people' > 
    <photo>/aWKKapGGyQ=</photo> 
    <sound>sdcfo2JTiXE=</sound> 
    <hash>Faa7vROi2VQ=</hash> 
</m:data> 

. cid 접두사는 필요하지 않습니다.

귀하의 질문에 답변하기 위해 abcdef은 웹 서비스 unmarshaller에 의해 Base-64로 인코딩 된 문자열을받은 3 바이트로 해석 중입니다.

+0

여전히 질문에 대답하지 않습니다. – Bitmap

+0

@ 비트 맵 질문이 명확하지 않은 경우 최대한 최선을 다해 답변을 업데이트했습니다. – artbristol

0

스키마는 형식을 "xs : base64Binary"일명 : BINARY로 명시합니다. 본질적으로 정보가 텍스트 인 것으로 예상되는 경우 유형은 "xs : string"또는 유사해야합니다.

실제로 서비스는 "cid : anystring"의 값을 완전히 거부해야합니다. Base64로 인코딩 된 요소에는 유효하지 않습니다.

관련 문제