5

मैं मूल http प्रमाणीकरण के माध्यम से एक webservice का उपयोग कैसे कर सकता हूं? मैं webservice क्लाइंट सुविधाओं में निर्मित netbeans का उपयोग कर रहा हूँ। लेकिन जब मैं webservice तक पहुंचने का प्रयास करता हूं, तो मुझे 401 ऑथ विफल त्रुटि संदेश के साथ अपवाद मिलता है।नेटबीन्स बेसिक एचटीपी ऑथ जैक्स-डब्ल्यूएस

मैं सही उपयोगकर्ता नाम और पासवर्ड कैसे पास कर सकता हूं?

धन्यवाद!

उत्तर

4

आप बुनियादी http प्रमाणीकरण के माध्यम से वेब सेवा तक पहुंचने के लिए बाइंडिंगप्रोवाइडर या WSBindingProvider क्लास का उपयोग कर सकते हैं। कोड निम्नानुसार है।

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

यह अगर डबल्यूएसडीएल बुनियादी HTTP प्रमाणीकरण – snowflake

+0

द्वारा खुद को संरक्षित नहीं है यही कारण है कि यह मेरे लिए काम नहीं करता है काम करेंगे? मेरे पास बिल्कुल यही है कि 'एआईएमपीएल एआईएमएलपोर्ट = नई एआईएमएलएस सेवा()। GetAImplPort(); बाइंडिंगप्रोवाइडर prov = (बाइंडिंगप्रोवाइडर) aImplort; prov.getRequestContext()। डाल (BindingProvider.USERNAME_PROPERTY, "fred"); prov.getRequestContext()। डालें (बाइंडिंगप्रोवाइडर.PAएसएसWORD_PROPERTY, "fred"); स्ट्रिंग बी = aImplPort.b(); System.out.println (बी); 'यह अपेक्षित प्राधिकरण http हेडर –

3

आप अपना खुद का प्रामाणिक भी प्रदान कर सकते हैं। इस तरह यह काम करेगा भले ही डब्लूडीएसएल स्वयं मूल HTTP प्रमाणीकरण द्वारा संरक्षित है।

@WebServiceRef(wsdlLocation = "https://laka/sito?wsdl") 
static XxxService service; 

public static void main(String[] args) { 

    Authenticator.setDefault(new Authenticator() { 
     @Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication("user", "password".toCharArray()); 
     } 
    }); 

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

    // invoke webservice and print response 
    XxxResponse resp = port.foo(); 
    System.out.println(resp.toString()); 

} 
+0

नहीं भेज रहा है यह नहीं पता था कि जावा में यह सुविधा है। बहुत उपयोगी। धन्यवाद! – gruenewa

+0

यह मेरे लिए क्यों काम करता है और 'reqContext.put (BindingProvider.USERNAME_PROPERTY, "उपयोगकर्ता नाम"); 'दृष्टिकोण यह मेरे जावा संस्करण से संबंधित नहीं है? –

संबंधित मुद्दे