Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отправка soap запроса в Perl, отправка запроса по протоколу soap 
:(
    Опции темы
dron000
Дата 5.11.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Необходимо  по адресу http://99.99.99.99/CCWS/ccws.asmx отправлять запрос по протоколу soap,
нашел тут http://www.opennet.ru/base/dev/soap_lite_perl.txt.html  с использованием soap lite но там ничего нет про формирование заголовка  <soap:Header>.

пример запроса :
Код

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
   xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
   xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <soap:Header>
  <SourceInfo xmlns="http://plat_ad.com/prepaid/ccws">
  <SourceApplication>CCC</SourceApplication>
  </SourceInfo>
  <VersionInfoHeader xmlns="http://plat_ad.com/prepaid/ccws">
  <ProductVersion>5.0</ProductVersion>
  <CustomerVersion>0</CustomerVersion>
  </VersionInfoHeader>
  <wsa:Action>http://plat_ad.com/prepaid/ccws/RetrieveSubscriberLite</wsa:Action>
  <wsa:MessageID>urn:uuid:8270a457-7c71-4434af-9f4a-ff951f056345435</wsa:MessageID>
  <wsa:ReplyTo><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo>
  <wsa:To>http://99.99.99.99/CCWS/ccws.asmx</wsa:To>
  <wsse:Security soap:mustUnderstand="1">
  <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-cc873c745-34498-4ae41-8c549-18853407dc9423">
  <wsse:Username>username</wsse:Username>
  <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">userpass</wsse:Password>
  </wsse:UsernameToken>
  </wsse:Security>
  </soap:Header>
  <soap:Body>
  <RetrieveSubscriberLite xmlns="http://plat_ad.com/prepaid/ccws"><subscriberID>12345678</subscriberID></RetrieveSubscriberLite>
  </soap:Body>
  </soap:Envelope>


Как правильно формировать такое сообщение? smile  smile 
PM MAIL   Вверх
shamber
Дата 5.11.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



а поиск по форуму совсем никак?
PM MAIL Jabber   Вверх
dron000
Дата 5.11.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну конечно, зашел сразу вопрос вбил и все....коненчо искал!...... только про soap ни слова...Если дадите ссылку буду очень признателен!
PM MAIL   Вверх
shamber
Дата 6.11.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



как-нибудь вот так пробовали?
Может я и неправ вовсе и зря Вас по поискам гоняю  smile
PM MAIL Jabber   Вверх
dron000
Дата 6.11.2009, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо.Так намного лучше....как-то не в тех разделах мягко говоря темы расположены. 
PM MAIL   Вверх
shamber
Дата 6.11.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



dron000, честно говоря там не густо smile

Разве что здесь

А что за сайтец 99.99.99.99 ? я на него так и не смог посмотреть smile

Это сообщение отредактировал(а) shamber - 6.11.2009, 00:21
PM MAIL Jabber   Вверх
dron000
Дата 6.11.2009, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Это сервис в локальной сети. Адрес соответственно изменен.
PM MAIL   Вверх
dron000
Дата 6.11.2009, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть возможность как-нибудь сказать интерпретатору чтобы он строку воспринимал как просто строку символов, неудобно каждый раз собирая запрос разбирать что ему не нравится и ставить "\"   ?
PM MAIL   Вверх
shamber
Дата 6.11.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



одинарные кавычки?
PM MAIL Jabber   Вверх
krypt3r
Дата 6.11.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Юзайте оператор q();
PM MAIL   Вверх
dron000
Дата 6.11.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Если взять текст в одинарные кавычки например '<?xml version="1.0" encoding="utf-8"?>'  то ничего особо не поменяется, потому как есть символы ?. " ... портящие строку а если перед ними поставить \  то в одинарных кавычках становится виден и он сам.

Добавлено через 2 минуты и 25 секунд
Я имею ввиду при присвоении какой-либо переменной типа:
Код

$data.='<\?xml version=\"1\.0\" encoding=\"utf-8\"?>';

PM MAIL   Вверх
krypt3r
Дата 6.11.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а зачем вы в апострофах экранируете столько символов?

PM MAIL   Вверх
dron000
Дата 6.11.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Для того чтобы тело xml запроса сформировать.
PM MAIL   Вверх
krypt3r
Дата 6.11.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Внутри апострофов экранировать следует апостроф и бэкслэш. Не пойму, зачем экранировать точку, кавычки, вопросительный знак
PM MAIL   Вверх
dron000
Дата 6.11.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да я уже все подряд пробовал, дабы понять что мешает.....Похоже что нет, когда меняешь <> на &lt;  &gt; и берешь строки(или можно весь запрос сразу) в одинарные в кавычки проблема уходит.
Только теперь почему-то: 
Код

$aurl='http://99.99.99.99/CCWS/ccws.asmx';
$xdata.='....строка запроса.....';

my $req = HTTP::Request->new(POST => $aurl);
$req->header('Content-Type' => 'text/xml; charset=UTF-8', 'Content-
Transfer-Encoding' => '7bit', 'Content-Description' 
=> 'Document');
$req->content($xdata);
my $response = $ua->request($req);



Пишет что : Can't call method "request" on an undefined value 
Типа $req пустой...??? smile 
PM MAIL   Вверх
shamber
Дата 6.11.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



Цитата(dron000 @  6.11.2009,  15:36 Найти цитируемый пост)
Типа $req пустой...??? 

а Data::Dump?

Добавлено @ 15:53
Цитата(dron000 @  6.11.2009,  15:36 Найти цитируемый пост)
Can't call method "request" on an undefined value 

У Вас пустой не $req, a $ua.


Это сообщение отредактировал(а) shamber - 6.11.2009, 15:53
PM MAIL Jabber   Вверх
dron000
Дата 9.11.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Сделал следующим образом, возвращает 400 bad request ,без всяких комментариев насчет тела запроса в $aurl


Код

$aurl='http://99.99.99.99/CCWS/ccws.asmx';
$xdata.='.......';

$ua=LWP::UserAgent->new;
 my $req=POST $aurl,[xmldata=>$xdata];
 my $response=$ua->request($req);

my $req = HTTP::Request->new(POST => $aurl);
$req->header('Content-Type' => 'text/xml; charset=UTF-8', 'Content-Transfer-Encoding' => '7bit', 'Content-Description' => 'Document');
$req->content($xdata);
my $response = $ua->request($req);

print$cgi->start_html;

if ($response->is_success) {$in_echo=$response->content;print$cgi->h4($in_echo);}
else {print $response->error_as_HTML;}
  
 print$cgi->end_html;


PM MAIL   Вверх
shamber
Дата 9.11.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



dron000, у вас уже есть что-то работающее по этому протоколу? Если да, то http сниффером сравните, то что передает ваш скрипт, и то что передает другая программа.

PM MAIL Jabber   Вверх
dron000
Дата 9.11.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Нет.....  в том то и дело , а вот посмотреть снифером хорошая идея.
PM MAIL   Вверх
shamber
Дата 9.11.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



dron000, а если нет, то откуда у вас в первом посте запрос приведен?
PM MAIL Jabber   Вверх
dron000
Дата 9.11.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Посмотел  в Wire Shark, в теле пакета следующее:

POST /CCWS/ccws.asmx HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: 99.99.99.99
User-Agent: libwww-perl/5.814
Content-Length: 2763
Content-Type: application/x-www-form-urlencoded

если смотреть в аски:

xmldata=%26lt%3B%3Fxml+version%3D%221.0%22+encoding%3D%22utf-8%22%3F%26gt%3B%0A%26lt%3Bsoap%3AEnvelope%0A++xmlns%3Asoap%3D%22http%3A%2F%2Fschemas.xmlsoap.org%2Fsoap%2Fenvelope%2F%22%0A+++xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%0A+++xmlns%3Axsd%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%22%0A+++xmlns%3Awsa%3D%22http%3A%2F%2Fschemas.xmlsoap.org%2Fws%2F2004%2F08%2Faddressing%22%0A+++xmlns%3Awsse%3D%22http%3A%2F%2Fdocs.oasis-open.org%2Fwss%2F2004%2F01%2Foasis-200401-wss-wssecurity-secext-1.0..............

все тело запроса отобращается в таком виде как выше.

HTTP/1.1 400 Bad Request

Connection: close
Date: Mon, 09 Nov 2009 09:30:11 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html

Может переедаваемый формат не тот??
Content-Type: application/x-www-form-urlencoded - может в этом дело или так и должно быть?



PM MAIL   Вверх
krypt3r
Дата 9.11.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Shamber предлагал не ваш скрипт снифать. Кстати, может, подойдет уже готовый пакет для работы с SOAP?
PM MAIL   Вверх
dron000
Дата 9.11.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Это рабочий пример запроса из проги на делфи.

Добавлено через 1 минуту и 18 секунд
Да в принцыпе я не против и готовым пакетом попробовать, просто не знаю как. Бду признателен если дадите пример.
PM MAIL   Вверх
dron000
Дата 9.11.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Заголовок пакета при снифе с той проги другой :

POST /CCWS/ccws.asmx HTTP/1.1
SOAPAction: "http://plat_ad.com/prepaid/ccws/RetrieveSubscriberWithIdentityNoHistory"Content-Type: text/xml
User-Agent:  Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.42)
Host: 99.99.99.99
Content-Length: 1801
Connection: Keep-Alive
Cache-Control: no-cache
.........
и тело в аски отображается без вопросов.Нужно ли при таком варианте  отправке как у меня указывать
SOAPAction, если да то как это сделать?
PM MAIL   Вверх
krypt3r
Дата 9.11.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так попробуйте
Код

my $url = 'http://99.99.99.99/CCWS/ccws.asmx';
my $ua = LWP::UserAgent->new ('agent' => 'Opera');
my $req = $ua->post ($url,
  'Host' => '99.99.99.99', 
  'Referrer' => $url, 
  'Content_Type' => 'text/xml', 
  'SOAPAction' => 'http://plat_ad.com/prepaid/ccws/RetrieveSubscriberWithIdentityNoHistory',
  'Content' => [
    ...
  ]
);

PM MAIL   Вверх
dron000
Дата 9.11.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот спасибо, так лучше, теперь при снифе и заголовок похож и само тело запроса отображается без левизны только я посылаю вместо <>  &lt;&gt; и при передаче в теле они отображаются также а нужно <> хотя если просто сделать вывод на страницу строковой переменной в которой нходится тело запроса товсе ок отображаются <>. smile

Добавлено через 1 минуту и 37 секунд
И сейчас  400 bad request  я думаю из-за этого...
PM MAIL   Вверх
krypt3r
Дата 9.11.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Гляньте снифером, что отправляет "другая прога", - <> или &lt;&gt;
PM MAIL   Вверх
dron000
Дата 10.11.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем спасибо, уже поправил.Работает.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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