Artiom Опубликовано 10 мая, 2007 Жалоба Поделиться Опубликовано 10 мая, 2007 Привет всем!! Помогите пожалуйста разобраться со следующей проблемкой: Обмен данными с банком в формате xml. :) Как это выполняется, с помощью какой програмки....??? Помигите пожалуйта, это очень важно, в долгу не останусь :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 10 мая, 2007 Жалоба Поделиться Опубликовано 10 мая, 2007 В каком смисле "с какой програмки". Да вы вопрос в программирование задали, а о готовой программе спрашиваете? И вообще у банка надо спросить? Что хотите сделать, обично xml пользують за обмен информации между серверов - сервер банка и ваший уеб-сервер, но тогда вопрос вообще не о программе, а как сделать ваш уеб-сайт ( или вашу программу если вопрос не о веб ) работать с ним. Уточните пожалуйста, xml - понятие большое, даже NotePad можеть сделать xml документа Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 10 мая, 2007 Автор Жалоба Поделиться Опубликовано 10 мая, 2007 Да-да Вы правы, мне нужно написать программулину Клиент-Банк, я бы предпочёл php. Если Вам нетрудно, обьясните мне, пожалуйста, как это делается(с php я знаком), но к сожалению не имею представления о систебе Клиент-Банк. :) Я понимаю, что нужно послать запрос, но ведь я даже не знаю к какой базе данных буду подключаться и как высылать запрос в xml? Обьясните, если не сложно. :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 10 мая, 2007 Жалоба Поделиться Опубликовано 10 мая, 2007 (изменено) Да-да Вы правы, мне нужно написать программулину Клиент-Банк, я бы предпочёл php. Если Вам нетрудно, обьясните мне, пожалуйста, как это делается(с php я знаком), но к сожалению не имею представления о систебе Клиент-Банк. :) Я понимаю, что нужно послать запрос, но ведь я даже не знаю к какой базе данных буду подключаться и как высылать запрос в xml? Обьясните, если не сложно. :) Обично пользують для этого SOAP ( Simple Object Access Protocol ), но возможно пользуват любой XML протокол. Для SOAP вам нужно подключить NuSOAP Отправляете запрос, получаете ответ У банка должен быт SOAP Server и описание протокола ( WSDL, сам SOAP server содержет его и показиваеть имена методов и параметры которые вам нужно отправлявать) Чуть поподробнее про SOAP и как пользуват его в PHP могу обяснить вам завтро, так как мое време изтекло Пока :) Изменено 10 мая, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 10 мая, 2007 Автор Жалоба Поделиться Опубликовано 10 мая, 2007 Если не сложно, обьясни пожплуйста завтра... Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 11 мая, 2007 Жалоба Поделиться Опубликовано 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 много работал Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 15 мая, 2007 Автор Жалоба Поделиться Опубликовано 15 мая, 2007 (изменено) Привет, возник еще один вопросик: как узнать где находиться WSDL файл? или можеть я его сам должен написать? Еще раз огромное спасибо! Жду ответа... :( Изменено 15 мая, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 15 мая, 2007 Жалоба Поделиться Опубликовано 15 мая, 2007 (изменено) Привет, Если ты делаеш сервер, то тебе нужно и сделать 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 делаеть все, что нужно :( Изменено 15 мая, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 15 мая, 2007 Автор Жалоба Поделиться Опубликовано 15 мая, 2007 (изменено) Спасибо. Изменено 15 мая, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 16 мая, 2007 Автор Жалоба Поделиться Опубликовано 16 мая, 2007 А что такое content-length: zna4enie в xml, какие значения он может принимать и как их задать из PHP? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 16 мая, 2007 Жалоба Поделиться Опубликовано 16 мая, 2007 (изменено) А что такое 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; Изменено 16 мая, 2007 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 16 мая, 2007 Автор Жалоба Поделиться Опубликовано 16 мая, 2007 Можно ли запихнуть эти строки с размером тела в посылаемый XML пакет? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 16 мая, 2007 Жалоба Поделиться Опубликовано 16 мая, 2007 Можно ли запихнуть эти строки с размером тела в посылаемый XML пакет? Нет ;) Они должни быт в HTTP Header, а посылаемый пакет это убе тело. Ничего сложного неть, если пользуеш NuSOAP он сам пропишеть content-type и content-length, если нет - надо просто сначало сгенерировать xml и записать его гдето, потом прочитать размер ( функция strlen() или filesize() ) отправить заголовки ( наконецто вспомнил как header по русски ), а потом и сам xml документ Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 16 мая, 2007 Автор Жалоба Поделиться Опубликовано 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. Мне уже стыдно, я столько вопросов задаю... надеюсь это последний Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 16 мая, 2007 Жалоба Поделиться Опубликовано 16 мая, 2007 Да не стесняйтесь, форум же для этого, чтоб спрашивать и находить ответи. Покажите код где пробуити встроить nusoap. Надеюсь ви не делали свой клас soapclient? Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 17 мая, 2007 Автор Жалоба Поделиться Опубликовано 17 мая, 2007 Да не стесняйтесь, форум же для этого, чтоб спрашивать и находить ответи. Покажите код где пробуити встроить nusoap. Надеюсь ви не делали свой клас soapclient? Так если нельзя делать свой класс, как же тогда ввести параметры и их значения? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 17 мая, 2007 Жалоба Поделиться Опубликовано 17 мая, 2007 Так если нельзя делать свой класс, как же тогда ввести параметры и их значения? Назовыте его по другом, например MySoap А в общем, параметри массив ( аrray ), клас для их не нужен.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 17 мая, 2007 Автор Жалоба Поделиться Опубликовано 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> прочёл десятки статей, вроде правильно написал, а она не работает, что не так, не пойму... Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 18 мая, 2007 Жалоба Поделиться Опубликовано 18 мая, 2007 Кажеться здесь проблема надо искат в сервере и в документации его методах. Вы получаете ответь но ответь - пустой P.S. Попробувал отркыт tempuri.org - если это ваш сервиз, но он не работаеть, выдаеть ошибку Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 18 мая, 2007 Автор Жалоба Поделиться Опубликовано 18 мая, 2007 (изменено) Нет-нет, tempuri.com не сервер, вот сервер. Хотя я зашёл на темпури.ком - ошибки не выдаёт. Просмотрел документацию, даже на русский перевёл - вроде всё правильно. Изменено 18 мая, 2007 пользователем Artiom Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 19 мая, 2007 Автор Жалоба Поделиться Опубликовано 19 мая, 2007 Так в чём же проблема, что не так? Почему ответ приходит пустой, если не трудно помоги разобраться до конца. Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 19 мая, 2007 Жалоба Поделиться Опубликовано 19 мая, 2007 Вообщем с провайдером сервиса надо разговаривать? Возможно вам нужен клиентский сертификать чтоб пользуват их сервис? Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 19 мая, 2007 Автор Жалоба Поделиться Опубликовано 19 мая, 2007 У меня есть сертификат, а куда его всунуть? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 19 мая, 2007 Жалоба Поделиться Опубликовано 19 мая, 2007 У меня в офисе есть пропаченая версия NuSOAP, которая умеет работать с клиентских сертификатов. Прийду в понедельник на работе, залю изходники. А пока можно поискать в интернете Думаю это поможеть: http://osdir.com/ml/php.nusoap.general/2006-12/msg00020.html Ссылка на комментарий Поделиться на другие сайты Поделиться
Artiom Опубликовано 19 мая, 2007 Автор Жалоба Поделиться Опубликовано 19 мая, 2007 пасиб Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти