Artiom Posted May 10, 2007 Report Share Posted May 10, 2007 Привет всем!! Помогите пожалуйста разобраться со следующей проблемкой: Обмен данными с банком в формате xml. :) Как это выполняется, с помощью какой програмки....??? Помигите пожалуйта, это очень важно, в долгу не останусь :) Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 10, 2007 Report Share Posted May 10, 2007 В каком смисле "с какой програмки". Да вы вопрос в программирование задали, а о готовой программе спрашиваете? И вообще у банка надо спросить? Что хотите сделать, обично xml пользують за обмен информации между серверов - сервер банка и ваший уеб-сервер, но тогда вопрос вообще не о программе, а как сделать ваш уеб-сайт ( или вашу программу если вопрос не о веб ) работать с ним. Уточните пожалуйста, xml - понятие большое, даже NotePad можеть сделать xml документа Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 10, 2007 Author Report Share Posted May 10, 2007 Да-да Вы правы, мне нужно написать программулину Клиент-Банк, я бы предпочёл php. Если Вам нетрудно, обьясните мне, пожалуйста, как это делается(с php я знаком), но к сожалению не имею представления о систебе Клиент-Банк. :) Я понимаю, что нужно послать запрос, но ведь я даже не знаю к какой базе данных буду подключаться и как высылать запрос в xml? Обьясните, если не сложно. :) Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 10, 2007 Report Share Posted May 10, 2007 (edited) Да-да Вы правы, мне нужно написать программулину Клиент-Банк, я бы предпочёл php. Если Вам нетрудно, обьясните мне, пожалуйста, как это делается(с php я знаком), но к сожалению не имею представления о систебе Клиент-Банк. :) Я понимаю, что нужно послать запрос, но ведь я даже не знаю к какой базе данных буду подключаться и как высылать запрос в xml? Обьясните, если не сложно. :) Обично пользують для этого SOAP ( Simple Object Access Protocol ), но возможно пользуват любой XML протокол. Для SOAP вам нужно подключить NuSOAP Отправляете запрос, получаете ответ У банка должен быт SOAP Server и описание протокола ( WSDL, сам SOAP server содержет его и показиваеть имена методов и параметры которые вам нужно отправлявать) Чуть поподробнее про SOAP и как пользуват его в PHP могу обяснить вам завтро, так как мое време изтекло Пока :) Edited May 10, 2007 by Darhazer Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 10, 2007 Author Report Share Posted May 10, 2007 Если не сложно, обьясни пожплуйста завтра... Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 11, 2007 Report Share Posted May 11, 2007 Значить есть сервер ( банк ) и клиент ( твой сайт ) Сервер поддерживаеть функции ( method ) Какие описано в WSDL Пример можно просмотреть здесь: https://www.smsbug.com/api/webservice.asmx Клиент делаеть запрос к серверо, отсилая имя method-a которого хочеть пользуват и его параметри и получаеть ответь Все это делаеться в виде XML, но NuSOAP делаеть из массива XML и из XML массив. это значить что ти просто отправляеш массив с параметров, которые нужни, и получаеш тоже массив. Примерчик. Здесь WSDLUrl - адрес сервиса, hello - имя method-а, а массив name=>Scott - эго параметри, в этом случае 1 параметр с имены name и значение Scott. <?phprequire_once('nusoap.php');$client = new soapclient( WSDLUtl, true);$result = $client->call('hello', array('name' => 'Scott'));print_r($result);?> Если напишеш nusoap examples в поисковике, найдеш много примеров. Надеюсь понял, если есть еще вопроси - пиши, я с SOAP много работал Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 15, 2007 Author Report Share Posted May 15, 2007 (edited) Привет, возник еще один вопросик: как узнать где находиться WSDL файл? или можеть я его сам должен написать? Еще раз огромное спасибо! Жду ответа... :( Edited May 15, 2007 by Darhazer Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 15, 2007 Report Share Posted May 15, 2007 (edited) Привет, Если ты делаеш сервер, то тебе нужно и сделать wsdl ( в общем WSDL - адрес самого сервера, надо только к адресу добавить ?WSDL ) Если работаеть с сервером другой организации, например банк, то они должни тебе сказать где находиться их WSDL Например если работаеш с smsbug, то сервер у них https://www.smsbug.com/api/webservice.asmx а адрес, который нужно дать soapclient будеть: $client = new soapclient( "https://www.smsbug.com/api/webservice.asmx?WSDL" , true); Здесь есть примерчики создания и сервера, и клиента http://www.scottnichol.com/nusoapprogwsdl.htm В общем NuSOAP делаеть все, что нужно :( Edited May 15, 2007 by Darhazer Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 15, 2007 Author Report Share Posted May 15, 2007 (edited) Спасибо. Edited May 15, 2007 by Darhazer Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 16, 2007 Author Report Share Posted May 16, 2007 А что такое content-length: zna4enie в xml, какие значения он может принимать и как их задать из PHP? Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 16, 2007 Report Share Posted May 16, 2007 (edited) А что такое content-length: zna4enie в xml, какие значения он может принимать и как их задать из PHP? это размер в байтов теле докуемнта Рак работаеть http, сначало у тебе headers, потом body в headers надо указать размер этого body Если отправляеш файл, то это будеть filesize( имя-файла ) В случае с XML-ом, или любого текста, это будеть strlen( $data ), где $data - переменная, содержащая текста Например: $body = "<?xml version='1.0'?><response><test>OK</test></response>";header("Content-Type: text/xml; charset=ISO-8859-1");header("Content-Length: ".strlen($body) );echo $body; Edited May 16, 2007 by Darhazer Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 16, 2007 Author Report Share Posted May 16, 2007 Можно ли запихнуть эти строки с размером тела в посылаемый XML пакет? Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 16, 2007 Report Share Posted May 16, 2007 Можно ли запихнуть эти строки с размером тела в посылаемый XML пакет? Нет ;) Они должни быт в HTTP Header, а посылаемый пакет это убе тело. Ничего сложного неть, если пользуеш NuSOAP он сам пропишеть content-type и content-length, если нет - надо просто сначало сгенерировать xml и записать его гдето, потом прочитать размер ( функция strlen() или filesize() ) отправить заголовки ( наконецто вспомнил как header по русски ), а потом и сам xml документ Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 16, 2007 Author Report Share Posted May 16, 2007 Попробовал встроить nusoap, сервер стал выводить ошибку:Fatal error: Cannot redeclare class soapclient in /home/vhosts/www.glousmob.md/public_html/nusoap/nusoap.php on line 7240 Что делать? P.S. Мне уже стыдно, я столько вопросов задаю... надеюсь это последний Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 16, 2007 Report Share Posted May 16, 2007 Да не стесняйтесь, форум же для этого, чтоб спрашивать и находить ответи. Покажите код где пробуити встроить nusoap. Надеюсь ви не делали свой клас soapclient? Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 17, 2007 Author Report Share Posted May 17, 2007 Да не стесняйтесь, форум же для этого, чтоб спрашивать и находить ответи. Покажите код где пробуити встроить nusoap. Надеюсь ви не делали свой клас soapclient? Так если нельзя делать свой класс, как же тогда ввести параметры и их значения? Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 17, 2007 Report Share Posted May 17, 2007 Так если нельзя делать свой класс, как же тогда ввести параметры и их значения? Назовыте его по другом, например MySoap А в общем, параметри массив ( аrray ), клас для их не нужен.... Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 17, 2007 Author Report Share Posted May 17, 2007 Короче написал я скрипт без nusoap, посылает запрос, и даже без ошибок, но ответ не содержит информации, которую я запрашиваю... <?php $client = new SoapClient("https://somehost.net/ClientAuthorization/BankPartnersWS.asmx?WSDL",array("trace" => 1,"exceptions" => 0));$param=array("Login"=>"login", "Password"=>"pass", "DateFrom"=>"01/05/07", "DateTo"=>"16/05/07");$client->getRegisters($param);print ($client); print "<pre>\n"; print "<table><tr><td width='200'><b>Request</b> :\n".htmlspecialchars($client->__getLastRequest()) ."\n"; print "<b>Response:</b>\n".htmlspecialchars($client->__getLastResponse())."\n";print "</td></tr></table>"; print "</pre>";?> вот результат: Object id #1Request : <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:getRegisters><ns1:Login>login</ns1:Login><ns1:Password>pass</ns1:Password><ns1:DateFrom>01/05/07</ns1:DateFrom><ns1:DateTo>16/05/07</ns1:DateTo></ns1:getRegisters></SOAP-ENV:Body></SOAP-ENV:Envelope> Response: <?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"><soap:Body><getRegistersResponse xmlns="http://tempuri.org/"><getRegistersResult /></getRegistersResponse></soap:Body></soap:Envelope> прочёл десятки статей, вроде правильно написал, а она не работает, что не так, не пойму... Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 18, 2007 Report Share Posted May 18, 2007 Кажеться здесь проблема надо искат в сервере и в документации его методах. Вы получаете ответь но ответь - пустой P.S. Попробувал отркыт tempuri.org - если это ваш сервиз, но он не работаеть, выдаеть ошибку Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 18, 2007 Author Report Share Posted May 18, 2007 (edited) Нет-нет, tempuri.com не сервер, вот сервер. Хотя я зашёл на темпури.ком - ошибки не выдаёт. Просмотрел документацию, даже на русский перевёл - вроде всё правильно. Edited May 18, 2007 by Artiom Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 19, 2007 Author Report Share Posted May 19, 2007 Так в чём же проблема, что не так? Почему ответ приходит пустой, если не трудно помоги разобраться до конца. Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 19, 2007 Report Share Posted May 19, 2007 Вообщем с провайдером сервиса надо разговаривать? Возможно вам нужен клиентский сертификать чтоб пользуват их сервис? Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 19, 2007 Author Report Share Posted May 19, 2007 У меня есть сертификат, а куда его всунуть? Quote Link to comment Share on other sites More sharing options...
Darhazer Posted May 19, 2007 Report Share Posted May 19, 2007 У меня в офисе есть пропаченая версия NuSOAP, которая умеет работать с клиентских сертификатов. Прийду в понедельник на работе, залю изходники. А пока можно поискать в интернете Думаю это поможеть: http://osdir.com/ml/php.nusoap.general/2006-12/msg00020.html Quote Link to comment Share on other sites More sharing options...
Artiom Posted May 19, 2007 Author Report Share Posted May 19, 2007 пасиб Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.