2010-03-11 5 views
0

Java로 웹 응용 프로그램을 개발 중입니다. 이 애플리케이션에서는 자바로 웹 서비스를 만들었습니다. 그 webservice에서는 base64 형식으로 이미지 목록을 반환하는 하나의 webmethod를 만들었습니다. 메서드의 반환 유형은 Vector입니다. 웹 서비스 테스터에서 SOAP 응답을 xsi:type="xs:base64Binary"으로 볼 수 있습니다. 그런 다음 응용 프로그램에서이 웹 메서드를 호출했습니다. 내 코드에 어떤 실수가webservice에서받은 이미지를 Binary64 형식으로 실제 이미지로 변환하는 방법은 무엇입니까?

java.lang.ClassCastException: [B cannot be cast to java.lang.String" on line String img = (String)itr.next();

있습니까 : 나는 오류가 발생하고이 코드에서

SBTSWebService webService = null; 
List imageArray = null; 
List imageList = null; 
webService = new SBTSWebService(); 
imageArray = webService.getSBTSWebPort().getAddvertisementImage(); 
Iterator itr = imageArray.iterator(); 
while(itr.hasNext()) 
{ 
    String img = (String)itr.next(); 
    byte[] bytearray = Base64.decode(img); 
    BufferedImage imag=ImageIO.read(new ByteArrayInputStream(bytearray)); 
    imageList.add(imag); 
} 

: 나는 다음과 같은 코드를 사용? 또는 실제 형식으로 이미지를 가져 오는 다른 방법이 있습니까? 위의 문제를 해결할 수있는 코드 또는 링크를 제공해 줄 수 있습니까?

답변

2

유형 표시기 [B은 반복기의 문자열이 아니라 바이트 배열을 받았음을 알려줍니다. 이러한 바이트가 Base64 문자열의 와이어 형식 (적절한 인코딩으로 새 문자열을 만들 필요가 있음)이거나 이미 디코딩 된 Base64 BLOB인지 여부는 알 수 없습니다.

1

사실, 나는 Steve와 동의한다. 그 라인에서 디버깅을 시도하고) (반환을 어떤 구체적인 유형 iter.next를 참조하거나 같은 것을 할 :

, 다음 방금 사용하도록 코드를 조정해야 할 구체적인 클래스가 무엇인지 알려 주어야
Object next = iter.next(); 
System.out.println(next.getClass()) 

그 클래스 대신 String.

HTH

관련 문제