2016-08-24 3 views
0

SOAP 웹 서비스를 호출하는 응용 프로그램. XML 요소 중 하나는 데이터 유형을 기대하고있다 base64Binary 비누 웹 서비스의 base64Binary

<sessionPassword>base64Binary</sessionPassword> 

같은 색소폰 같이 구문 분석하는 동안 1.I을 읽을 수 있습니다

setSessionPassword((new String(ch,start,length)).getBytes()); 

이 맞습니까?

2.I는 다음과 같이 URI에이 암호 필드를 전달해야

private static final String URI_BASE = "https://srini3000.com/Conversion/gateway.asmx/ASAPIDList?"; 
String _sessionNum = "sessionNum=$1&"; 
String _sessionPaswrd = "sessionPassword=$2&sessionPassword="; 

StringBuilder url = new StringBuilder(URI_BASE) ; 
url.append(_sessionNum.replace("$1",Integer.toString(xmlHandler.getSessionNum()))); 
url.append(_sessionPaswrd.replace("$2",xmlHandler.getSessionPassword().toString())); 

POINT2에 같은 한 후에 나는 System.Byte에 79be0360 @ [B 변환 할 수 없습니다 직면하고있다.

의견을 보내주십시오. FYI 나는 resti를 사용하여 uri 전화를 걸고 있습니다. FYI XmlHandler는 xml 구문 분석 후 빌드 된 pojo 클래스입니다. SessionNum, SessionPassword (byte[]으로 선언 됨) 필드가 있습니다.

답변

0

첫 번째 질문에 대해서는 xsd의 bean 표현에 따라 다릅니다. 내부적으로 \ 디코드를 인코딩하는 엔진이 있습니다. base64base64Binary 유형의 경우 set \ get 메서드가 호출 될 때이 엔진을 사용하지만 다른 방법으로 수행하지 않는 엔진이 있습니다. 따라서 구현에 따라 setSessionPassword()을 호출하기 전에 password을 인코딩해야 할 수 있습니다. 두 번째 질문에 대해

, 당신의 POJO 내부에 다음과 같이 sessionPassword가 선언 된 경우 :
public class yourPojo { 
    private byte[] sessionPassword; 
    ... 
    public byte[] getSessionPassword(){ 
     return sessionPassword; 
    } 
} 

그런 다음 후속 라인이 작동하지

가 예상대로 :

xmlHandler.getSessionPassword().toString() 

때문에 byte 형식이 아닙니다 toString() 메서드를 재정의하면 getSessionPassword().toString()이 올바른 값이 아닌 [[email protected]을 반환합니다 (this question t 참조). o 기본값 인 toString() 동작에 대한 추가 정보).

문제를 해결하기 위해 당신은 다음과 코드를 사용하는 대신 toString() 호출했습니다 :

_sessionPaswrd.replace("$2",new String(xmlHandler.getSessionPassword(),"UTF-8")); 

는 희망이 도움이

관련 문제