Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Опять SOAP, PHP и 1С

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Paltash
Отправлено: 17 Октября, 2008 - 10:31:26
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Люди, хелп!
Пытаюсь нарисовать свой сервис на php (в качестве пробы).
У сервиса есть две функции. Одна-getQuote возвращает цифирь (из примеров), вторая-GetOneOrder возвращает по номеру заказа сам заказ клиента:
Id заказчика, Имя заказчика, Номер заказа, Дату заказа

Возникли две проблемы:
проблема намбер раз: при использовании SOAP-клиента написанного на PHP первая функция нормально работает - возвращает циферку. А вот вторая ругается
"looks like we got no XML document", хотя при выводе $client->__getLastResponse()
выводится вот такой ответ:
CODE (text):
скопировать код в буфер обмена
  1.  
  2.  <?xml version="1.0" encoding="UTF-8"?>
  3. <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  4.                   xmlns:ns1="http://localhost/SOAPtest"
  5.                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  6.       <SOAP-ENV:Body>
  7.             <ns1:GetOneOrderResponse xsi:type="ns1:Orrder">
  8.                   <ns1:Client_Id>12345</ns1:Client_Id>
  9.                   <ns1:Client_Name>Aa AAAA</ns1:Client_Name>
  10.                   <ns1:Order_No>163469</ns1:Order_No>
  11.                   <ns1:Order_PostDate>2008-06-04</ns1:Order_PostDate>
  12.             </ns1:GetOneOrderResponse>
  13.       </SOAP-ENV:Body>
  14. </SOAP-ENV:Envelope>
  15.  


проблемма намбер два:
1С ругается на обе функции : говорит "The XML or Text declaration must start at line/column 1/1 "
при просмотре ответа это действительно есть эта ошибка (в ответе перед <?xml стоит пробел). хотя PHP-клиент не ругается на первую функцию
Собсно вопрос где покопаться чтобы поправить?


-----
Есть 10 типов людей:
Кто понимает двоичную систему и кто нет
 
 Top
valenok Модератор
Отправлено: 17 Октября, 2008 - 11:41:10
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




1. Давайте сюда код клиента, посмотрим.
2.Искать откуда берется пробел.


-----
Truly yours, Sasha.
 
My status
 Top
Paltash
Отправлено: 17 Октября, 2008 - 12:02:33
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Клиент - элементарный

CODE (text):
скопировать код в буфер обмена
  1.    $client = new SoapClient("http://localhost/SOAPtest/WebShop.wsdl",
  2.     array(
  3.       "trace"      => 1,
  4.       "exceptions" => 0));
  5.  
  6.     $parm["OrderId"] = "163469";
  7.     $result = $client->GetOneOrder($parm);
  8.     print "<br><b>Запрос:</b><br>".htmlspecialchars($client->__getLastRequest()) ."\n";
  9.     print "<br><b>Ответ:</b><br>".htmlspecialchars($client->__getLastResponse())."\n";
  10.     print "<br><b>Ошибка:</b><br>SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring})<br>";


Вот код функции

CODE (text):
скопировать код в буфер обмена
  1.         function GetOneOrder($parms)
  2.         {
  3.             $this->connectDB();
  4.             if (!isset($parms->OrderId))
  5.             {
  6.                  throw new SoapFault("Client","OrderId not set");
  7.             }
  8.  
  9.             $query = "SELECT  Shop_User.ID as Client_Id, Shop_User.Name as Client_Name,
  10.                         Shop_Order.Id as Order_No, shop_order.postdate as Order_PostDate
  11.                         FROM Shop_User, Shop_Order
  12.                         WHERE Shop_Order.ID = " . $parms->OrderId;
  13.  
  14.             $result = mysql_query($query);
  15.  
  16.              If (mysql_errno()>0)
  17.             {
  18.                 throw new SoapFault("Server","Query failed : " . mysql_error());
  19.             }
  20.  
  21.             $line = mysql_fetch_array($result, MYSQL_ASSOC);
  22.             $Orrder = new StdClass;
  23.             $Orrder->Client_Id = $line["Client_Id"];
  24.             $Orrder->Client_Name = $line["Client_Name"];
  25.             $Orrder->Order_No = $line["Order_No"];
  26.             $Orrder->Order_PostDate = $line["Order_PostDate"];
  27.             $retVal->retrn = $Orrder;
  28.             return($retVal);
  29.     }
  30.  


-----
Есть 10 типов людей:
Кто понимает двоичную систему и кто нет
 
 Top
Paltash
Отправлено: 21 Октября, 2008 - 10:27:27
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Люди! Ну неужели никто не подскажет???
....

Ураа!!! Радость
Я понял!! Блин. всё оказалось банально...
При написании сервера открывающийся тег <?php был не самым первым символом в коде.
а перед ним стоял пробел.
Как оказалось вот он-то мне и подпорчивал всё. Нахмурился
Для меня, как новичка в PHP это было немного нетривиально. Но разобрался...
Может кому и пригодится..

(Отредактировано автором: 21 Октября, 2008 - 10:53:45)



-----
Есть 10 типов людей:
Кто понимает двоичную систему и кто нет
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB