كيف تستهلك خدمة ويب محمية مع HTTP المصادقة الأساسية باستخدام إطار CXF؟
-
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);
لا تنتمي إلى StackOverflow