5

Wie kann ich auf einen Webservice durch eine grundlegende http-Authentifizierung zugreifen? Ich verwende die NetBeans, die in Webservice-Client-Funktionen integriert sind. Aber wenn ich versuche, auf den Webservice zuzugreifen, erhalte ich eine Ausnahme mit einer Fehlermeldung 401 auth failed.Netbeans Grundlegende Http Auth Jax-WS

Wie kann ich den richtigen Benutzernamen und das Passwort weitergeben?

Vielen Dank!

Antwort

4

Sie können die BindingProvider- oder WSBindingProvider-Klasse verwenden, um über eine einfache HTTP-Authentifizierung auf einen Web-Service zuzugreifen. Der Code ist wie folgt.

XxxService service = new XxxService(); 
Xxx port = service.getXxxPort(); 

Map<String, Object> reqContext = ((BindingProvider)port).getRequestContext(); 
reqContext.put(BindingProvider.USERNAME_PROPERTY, "username"); 
reqContext.put(BindingProvider.PASSWORD_PROPERTY, "password"); 
+2

Dies funktioniert, wenn die WSDL selbst nicht durch Basic Http Authentication – snowflake

+0

geschützt ist, warum es für mich nicht funktioniert? Ich habe genau das. "AImpl aImplPort = new AImplService(). GetAImplPort(); BindingProvider prov = (BindingProvider) aImplPort; prov.getRequestContext(). Put (BindingProvider.USERNAME_PROPERTY, "fred"); prov.getRequestContext(). Put (BindingProvider.PASSWORD_PROPERTY, "fred"); Zeichenfolge b = aImplPort.b(); System.out.println (b); 'Es wird nicht erwartet Autorisierung HTTP-Header gesendet –

3

Sie können auch Ihren eigenen Authentifikator angeben. Auf diese Weise wird es auch funktionieren, wenn der WDSL selbst durch grundlegende HTTP-Authentifizierung geschützt ist.

+0

Wusste nicht, dass Java diese Funktion enthält. Sehr hilfreich. Vielen Dank! – gruenewa

+0

Warum funktioniert es für mich und die 'reqContext.put (BindingProvider.USERNAME_PROPERTY," Benutzername "); 'Ansatz ist es nicht mit meiner Java-Version verwandt? –

Verwandte Themen