كيف تستهلك خدمة ويب محمية مع HTTP المصادقة الأساسية باستخدام إطار CXF؟

StackOverflow https://stackoverflow.com/questions/705728

  •  22-08-2019
  •  | 
  •  

سؤال

وحاولت الحصول على عمل باستخدام CXF دليل المستخدم ، ولكني لم يكن الحظ.

وأنا أحاول أن استدعاء خدمة الويب باستخدام كود جافا.

هل كانت مفيدة؟

المحلول

وهذا هو تغطية من قبل المواصفات JAX-WS. في الأساس، وتعيين اسم المستخدم / كلمة السر من الخصائص في سياق الطلب:

((BindingProvider)proxy).getRequestContext().put(
    BindingProvider.USERNAME_PROPERTY, "joe");
((BindingProvider)proxy).getRequestContext().put(
    BindingProvider.PASSWORD_PROPERTY, "pswd");

ووقت تشغيل يضعهم في رأس HTTP.

نصائح أخرى

ويمكنك توفير الموثق الخاص بك. بهذه الطريقة سوف تعمل إذا كان WSDL نفسها محمية من قبل مصادقة 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());

}

وهناك طريقة أفضل من ذلك بكثير:

وعندما توليد جافا من اختصار، إضافة خيار "-exsh صحيح":

وwsdl2java -exsh صحيح -p edu.sharif.ce http://wsdl.ir/WebServices /WebService.asmx؟WSDL

وإضافة UserCredential عند استخدام:

UserCredentials user = new UserCredentials();
user.setUserid("user");
user.setPassword("pass");

ResearchWebService_Service service = new ResearchWebService_Service();
ResearchWebService port = service.getResearchWebService();
port.addNewProject(newProject, user);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top