У меня есть старый веб-сервис, созданный с Axis 1.4, который мне нужно потреблять. Для того, чтобы заставить его работать на заголовке запроса должен быть добавлен следующий маркерЗаголовок авторизации на Axis 1.4 Сервис
Авторизация: Basic {codifiedUsername}
Использование SoapUI я не имею никакого вопроса, но когда я пытаюсь добавить маркер авторизации на вызов службы оси, ответ службы с ошибкой, так же, как когда я не установлен codifiedUsername в заголовке запроса на SoapUI
I'm, используя следующий код пытается добавить маркер Авторизация: Basic {codifiedUsername}, к заголовку
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);
Я также создал заглушку webservice, чтобы увидеть, имеет ли заглушка какой-либо способ передать заголовок с информацией авторизации, но я не знаю столько о оси. Это код, который я должен назвать тот же самый метод
MyService myService = new MyServiceLocator();
MyServiceSoapBindingStub stub;
stub = new MyServiceSoapBindingStub(new URL(myService.getMyServiceAddress()),myService);
String result=stub.validate("6677","6778","001","trrtr");
Так что мне нужно знать, как правильно установить маркер авторизации на вызов службы или службы заглушки, используя Java ось 1,4
Благодаря
Действительно ли 'usuario.getBytes()' должен быть 'user.getBytes()'? Кроме того, по моему опыту, то, что ожидается для Basic auth, - это кодированная Base64 строка 'username: password', а не' username'; но я вижу только имя пользователя, которое передается для кодирования. –
Пользователь suplied, но я просто прост, также пространство имен и реальное имя службы. Пользовательский код одинаковый для Java-кода и запроса soapui. На заголовках soap ui запрос отправляется с авторизацией: Basic XXXXXXX –
Ни в коем случае я не хочу быть снисходительным, но я не уверен, что отвечает на мой вопрос или обращается к моему следующему пункту; Я не понимаю, о чем ты говоришь. Если вы говорите, что код, который вы опубликовали, не обязательно отражает то, что происходит во время вашего фактического приложения, то трудно найти, что не так. Если можно, отправьте MCVE (минимальный, полный и проверенный пример). –