2016-08-24 1 views
0

Anwendungsaufruf SOAP-Webdienste. Eines des XML-Elements erwartet Datentyp wie base64Binary wiebase64Binary in Soap-Webdienst

<sessionPassword>base64Binary</sessionPassword> 

1.Ich kann es lesen, während sax wie Parsen:

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

Ist das richtig?

2.I benötigen dieses Passwort-Feld wie diese URI weitergeben müssen:

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

Nachdem wie in point2 ich bin vor konvertieren kann nicht [B @ 79be0360 zu System.Byte.

Irgendwelche Vorschläge bitte. FYI Ich benutze Restlet, um die Uri Anrufe zu machen. FYI XmlHandler ist eine Pojo-Klasse, die nach dem Xml-Parsing erstellt wurde. Es hat SessionNum, SessionPassword (als byte[] deklariert) Felder.

Antwort

0

Über Ihre erste Frage, hängt von der Bean Darstellung Ihrer xsd ab. Es gibt einige Engines, die intern codieren, um base64set \ get Methode für Felder von base64Binary Typ zu codieren, aber es gibt andere, die dies für Sie nicht ausführen. Es hängt also von der Implementierung ab, ob die password vor dem Aufruf setSessionPassword() codiert werden muss.

Über Ihre zweite Frage, ob sessionPassword deklariert als in Ihrem POJO folgt:

public class yourPojo { 
    private byte[] sessionPassword; 
    ... 
    public byte[] getSessionPassword(){ 
     return sessionPassword; 
    } 
} 

Dann wird die Folgezeile funktioniert nicht wie erwartet:

xmlHandler.getSessionPassword().toString() 

Da nicht byte Typ überschreiben toString() Methode, so getSessionPassword().toString() gibt [[email protected] zurück, die nicht der richtige Wert ist (siehe this question t o Weitere Informationen zum Standardverhalten toString() Verhalten).

zu lösen Ihr Problem haben Sie die Folge Code zu verwenden, statt aufrufen toString():

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

Hoffe, dass es hilft,

Verwandte Themen