Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> xfire не соблюдает регистр в аттрибутах заголовка 
:(
    Опции темы
pompei
Дата 9.6.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: нет
Всего: 6



Всем привет
У меня проблемма с клиентом XFire при вызове сервиса.

XFire почему-то генерирует атрибуты заголовка с маленькой буквы, хотя сервис требует с большой (и в wsdl-файле тоже большие буквы стоят).

Код

POST /Cig.WebService.CigSuite/service.asmx HTTP/1.1
SOAPAction: "http://ws.creditinfo.com/GetLocations"
Content-Type: text/xml; charset=UTF-8
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; XFire Client +http://xfire.codehaus.org)
Host: www-test2.1cb.kz:7777
Expect: 100-continue
Content-Length: 861

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Header>
      <CigWsHeader xmlns="http://ws.creditinfo.com/">
         <culture xmlns="http://ws.creditinfo.com">ru_RU</culture>
         <!-- а должно быть: Culture xmlns=... -->
         <otherAttributes xmlns="http://ws.creditinfo.com" />
         <password xmlns="http://ws.creditinfo.com">aaaa</password>
         <!-- а должно быть: Password xmlns=... -->
         <securityToken xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance" ns1:nil="true" xmlns="http://ws.creditinfo.com" />
         <!-- и т.д. -->
         <userId xmlns="http://ws.creditinfo.com">1</userId>
         <userName xmlns="http://ws.creditinfo.com">aaaa</userName>
         <version xmlns="http://ws.creditinfo.com">1_0</version>
      </CigWsHeader>
   </soap:Header>
   <soap:Body xmlns:ns1="http://ws.creditinfo.com/">
      <ns1:GetLocations>
         <ns1:parentId>0</ns1:parentId>
      </ns1:GetLocations>
   </soap:Body></soap:Envelope>


Из-за этого генерируется ошибка: org.codehaus.xfire.fault.XFireFault: Version missing from security header.
Т.е. сервер не видит аттрибут Version потому что он его ждёт с большой буквы а приходит с маленькой

Сервер работает на платформе .NET

wsdl-file: http://www-test2.1cb.kz/Cig.WebService.Cig...rvice.asmx?wsdl

на следующем посте я напишу точную последовательность действий

Добавлено через 6 минут и 33 секунды
вот сдесь я скачал xfire: http://xfire.codehaus.org/Download

от тубава взял jar-ы для такого скрипта:
Код

LIB=../lib

CP=$LIB/xfire-all-1.2.6.jar
CP=$CP:$LIB/ant.jar
CP=$CP:$LIB/jaxb-api-2.0.jar
CP=$CP:$LIB/stax-api-1.0.1.jar
CP=$CP:$LIB/jdom-1.0.jar
CP=$CP:$LIB/jaxb-impl-2.0.1.jar
CP=$CP:$LIB/jaxb-xjc-2.0.1.jar
CP=$CP:$LIB/wstx-asl-3.2.0.jar
CP=$CP:$LIB/commons-logging-1.0.4.jar
CP=$CP:$LIB/activation-1.1.jar
CP=$CP:$LIB/wsdl4j-1.6.1.jar
CP=$CP:$LIB/XmlSchema-1.1.jar

java -cp $CP org.codehaus.xfire.gen.WsGen \
    -wsdl http://www-test2.1cb.kz/Cig.WebService.CigSuite/service.asmx?wsdl \
    -o ../webservice \
    -p kz.greetgo.nbp.export1cb.webservice \
    -binding jaxb \
    -overwrite true


который в папке ../webservice сгенерировал набор классов

потом я воспользовался этими классами следующим образом:
Код

public static void main(String[] args) {
        int runBlock = 2;
        
        ServiceClient sc = new ServiceClient();
        String host = "www-test2.1cb.kz";
        //String host = "localhost:7777"; // - прогоняем через axis
        ServiceSoap s =
            sc.getServiceSoap("http://" + host
                + "/Cig.WebService.CigSuite/service.asmx");
        if (runBlock == 2) {
            CigWsHeader cigWsHeaderValue = new CigWsHeader();
            cigWsHeaderValue.setUserName("любой");
            cigWsHeaderValue.setPassword("любой");
            cigWsHeaderValue.setCulture("ru_RU");
            cigWsHeaderValue.setUserId(1);
            cigWsHeaderValue.setVersion("1_0");
            
            Holder<CigWsHeader> cigWsHeader =
                new Holder<CigWsHeader>(cigWsHeaderValue);
            
            GetLocations getLocations = new GetLocations();
            getLocations.setParentId(0);
            
            GetLocationsResponse locations =
                s.getLocations(getLocations, cigWsHeader);
            
            GetLocationsResult locationsResult =
                locations.getGetLocationsResult();
            List<Object> list = locationsResult.getContent();
            for (Object o : list) {
                System.out.println("o: " + o.getClass());
            }
            
        }
    }

(../webservice - включил в сурспаф, и все вышеприведенные jar-ы)

Добавлено через 11 минут и 41 секунду
вот такой скрипт на перле работает нормально:
Код

#!/usr/bin/perl -w

use strict;
use HTTP::Request;
use LWP::UserAgent;

my $content=<<CONTENT;
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <CigWsHeader xmlns="http://ws.creditinfo.com/">
      <UserName>aaa</UserName>
      <Password>aaa</Password>
      <Version>1_0</Version>
      <Culture></Culture>
      <SecurityToken>string</SecurityToken>
      <UserId>1</UserId>
    </CigWsHeader>
  </soap:Header>
  <soap:Body>
    <GetLocations xmlns="http://ws.creditinfo.com/">
      <parentId>246</parentId>
    </GetLocations>
  </soap:Body>
</soap:Envelope>
CONTENT

my $r = HTTP::Request->new(
    POST => 'http://www-test2.1cb.kz/Cig.WebService.CigSuite/service.asmx'
);



$r->header( "Host"=> "localhost" );
$r->header( "Content-Type"=> "text/xml; charset=utf-8" );
$r->header( "Content-Length"=> length $content );
$r->header( "SOAPAction"=> '"http://ws.creditinfo.com/GetLocations"' );
$r->content( $content );

my $ua = LWP::UserAgent->new();
my $res = $ua->request( $r );

use Data::Dumper;

print Dumper( $res );



Добавлено через 14 минут и 25 секунд
Почему xfire генерирует неправильные имена атрибутов заголовков (путает регистры)?

Заранее благодарю!
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
pompei
Дата 11.6.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: нет
Всего: 6



Я отказался от XFire. Axis2 - рулит!!!! В нём всё работает!!!!!
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.