2010-03-12 4 views
2

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

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); 
} 

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

참고 : - 나는 이미이 질문을 떨어 뜨린하고 다음 코드

Object next = iter.next(); 
System.out.println(next.getClass()) 

이 코드를 시도하고 웹 서비스에서 byte[]로 출력을 얻었다을 시도하는 suggetion을 얻었다. 그러나 나는이 바이트 배열을 실제 이미지로 변환 할 수 없다. 이미지를 실제 형식으로 가져 오는 다른 방법이 있습니까? 위의 문제를 해결할 수있는 코드 또는 링크를 제공해 줄 수 있습니까?

+0

제발 내가 이해할 수없는이 질문을 편집하십시오! ... 코드를 올바르게 작성하십시오. – RubyDubee

답변

0

나는 당신이 뭘하려는 건지에 익숙하지 않은,하지만 난이 말을 할 수 Stringbyte[]하는 생성자를 가지고있다.

정확하게 이해했다면 String s = (String) byteArray;을 시도했지만 당연히 작동하지 않습니다. String s = new String(byteArray);을 사용해보십시오. 아마도 당신이 의미하는 것이

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

말인지 : 실제 오류 메시지를 보면

String img = new String(itr.next()); 
1

가 사용 Base64.decode을 변환하려면;

String base64String = (String)itr.next(); 
byte[] bytearray = Base64.decode(base64String); 

BufferedImage imag=ImageIO.read(bytearray); 
관련 문제