Ich habe einen alten Webservice erstellt mit Axis 1.4, den ich verbrauchen muss. Damit es funktioniert, auf Anfrage Header muss die folgende TokenAutorisierungs-Header auf Achse 1.4 Service
Berechtigung hinzugefügt werden: Grundes {codifiedUsername}
Mit soapui i habe kein Problem, aber wenn ich versuche, die Autorisierungs-Token in Achse Dienstanruf hinzuzufügen, Service-Antwort mit Fehler, genau wie wenn ich codifiedUsername in Request-Header auf soapui
ich bin mit dem folgenden Code versuchen, setzen nicht das Token-Autorisierung hinzuzufügen: Grund {codifiedUsername}, an den Header
String targetNamespace = "http://www.mysrevice/services/MyService";
String serviceName = "MyService";
String portName = "MyService";
String wsdlURL = "http://xxx.xx.xx.x:8080/idws2/services/MyService?wsdl";
QName qnameService = new QName(targetNamespace, serviceName);
QName qnamePort = new QName(targetNamespace, portName);
ServiceFactory factory = (ServiceFactory) ServiceFactory.newInstance();
Service service = (Service)factory.createService(new URL(wsdlURL),qnameService);
QName qnameOperation = new QName(targetNamespace, "validate");
Call call = (Call)service.createCall(qnamePort, qnameOperation);
String user="235654321";
byte[] bUser=usuario.getBytes();
String encoded=Base64.encode(bUser);
System.out.println("encoded user: "+encoded);
org.apache.axis.message.SOAPHeaderElement header = new org.apache.axis.message.SOAPHeaderElement("http://myservice.com","MyServiceHeade r");
SOAPElement node = header.addChildElement("Authorization:");
node.addTextNode("Basic "+encoded);
call.addHeader(header);
Object[] params = {"6677","6778","001","trrtr"};
call.addHeader(header);
String response = (String)call.invoke(params);
Ich habe auch den Webservice-Stub erstellt, um zu sehen, ob Stub irgendeine Methode hat, den Header mit Autorisierungsinformationen zu übergeben, aber ich weiß nicht so viel über Axis. Dies ist der Code, dass ich die gleiche Methode zu nennen haben
MyService myService = new MyServiceLocator();
MyServiceSoapBindingStub stub;
stub = new MyServiceSoapBindingStub(new URL(myService.getMyServiceAddress()),myService);
String result=stub.validate("6677","6778","001","trrtr");
i java Achse 1.4
Dank
Ist 'usuario.getBytes()' angeblich 'user.getBytes()'? Aus meiner Erfahrung, was für Basic Auth erwartet wird, ist eine Base64-codierte Zeichenfolge von "Benutzername: Kennwort" anstelle von "Benutzername"; aber ich sehe nur, dass der Benutzername an encode übergeben wird. –
Benutzer wird geliefert, aber ich vermisse Einfachheit, auch Namespace und Service echten Namen. Der codierte Benutzer ist für Java-Code und Soapui-Anfrage identisch. Auf Seife ui Kopfzeilen wird die Anfrage mit Autorisierung gesendet: Basic XXXXXXX –
In keiner Weise versuche ich, herablassend zu sein, aber ich bin nicht sicher, dass meine Frage beantwortet oder Adressen meinen folgenden Punkt; Ich verstehe nicht, was Sie meinen, was Sie sagten. Wenn Sie sagen, dass der Code, den Sie gepostet haben, nicht unbedingt das widerspiegelt, was während Ihrer tatsächlichen Anwendung passiert, dann ist es schwer zu helfen, herauszufinden, was falsch läuft. Wenn möglich, poste ein MCVE (Minimal, Complete und Verifable Example). –