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 :: Скрипт для обмена xml-запросами

 PHP.SU

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


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

> Без описания
Santer063
Отправлено: 07 Ноября, 2013 - 13:15:15
Post Id


Новичок


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


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




Здравствуйте. Вот такая у меня проблема.

Файл index.htm :

CODE (html):
скопировать код в буфер обмена
  1. <title>Отправка данных</title>
  2. <body>
  3. <h1>Отправка данных</h1>
  4. <form name="zapros" id="zapros">
  5. <p><input type="text" name="surname" id="surname" value="" size="25" />
  6. <small> Фамилия</small>
  7. </p>
  8. <p><input type="text" name="firstname" id="firstname" value="" size="25" />
  9. <small> Имя</small>
  10. </p>
  11. <p><input type="text" name="middlename" id="middlename" value="" size="25" />
  12. <small> Отчество</small>
  13. </p>
  14. <p><input type="date" name="dateofbirth" id="dateofbirth" value="" size="35" />
  15. <small> Дата рождения</small>
  16. </p>
  17. <p><input type="text" name="idseries" id="idseries" value="" size="25" />
  18. <small> Серия паспорта</small>
  19. </p>
  20. <p><input type="text" name="idnum" id="idnum" value="" size="25" />
  21. <small> Номер паспорта</small>
  22. </p>
  23. <p><button formaction="2.php" formenctype=multipart/form-data formmethod=POST>Отправить</button>
  24. </p>
  25. </form>
  26. </body>
  27. </html>
  28.  


Файл 2.php:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //Функция отправки xml запроса
  3. function PostXML($link, $xml) {
  4. $chx = curl_init();//инициализация curl
  5. curl_setopt($chx, CURLOPT_URL, $link);//адрес запроса
  6. curl_setopt($chx, CURLOPT_TIMEOUT, 90);
  7. curl_setopt($chx, CURLOPT_RETURNTRANSFER, 1);// Ожидание ответа сервера
  8. curl_setopt($chx, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
  9. curl_setopt($chx, CURLOPT_POST, 1);
  10. curl_setopt($chx, CURLOPT_POSTFIELDS, $xml);
  11. $result = curl_exec($chx);
  12. curl_close($chx);
  13. return $result;
  14. }
  15. //Присвоение переменным значений из полей html-формы
  16. $Surname1 = $_POST['surname'];
  17. $Firstname1 = $_POST['firstname'];
  18. $Middlename1 = $_POST['middlename'];
  19. $DateOfBirth1 = $_POST['dateofbirth'];
  20. $IdSeries1 = $_POST['idseries'];
  21. $IdNum1 = $_POST['idnum'];
  22. //////////////////////////////// ///////////////////////////////
  23. //////////////////СОЗДАНИЕ XML//////////////////////////
  24. //////////////////////////////// ///////////////////////////////
  25. $dom = new DomDocument('1.0','utf-8'); //Создаем xml-строку
  26. //Добавление корня - <Fms>
  27. $Fms = $dom->appendChild($dom->createElement('Fms'));
  28. //Добавление элемента <Request> в <Fms>
  29. $Request = $Fms->appendChild($dom->createElement('Request'));
  30. // добавление элемента <Id> в <Request>
  31. $Id = $Request->appendChild($dom->createElement('Id'));
  32. // добавление элемента <Auth> в <Request>
  33. $Auth = $Request->appendChild($dom->createElement('Auth'));
  34. // добавление элемента <MemberCode> в <Auth>
  35. $MemberCode = $Auth->appendChild($dom->createElement('MemberCode'));
  36. // добавление элемента <User> в <Auth>
  37. $User = $Auth->appendChild($dom->createElement('User'));
  38. // добавление элемента <Password> в <Auth>
  39. $Password = $Auth->appendChild($dom->createElement('Password'));
  40. // добавление элемента <Contents> в <Request>
  41. $Contents = $Request->appendChild($dom->createElement('Contents'));
  42. // добавление элемента <Surname> в <Contents>
  43. $Surname = $Contents->appendChild($dom->createElement('Surname'));
  44. // добавление элемента <Firstname> в <Contents>
  45. $Firstname = $Contents->appendChild($dom->createElement('Firstname'));
  46. // добавление элемента <Middlename> в <Contents>
  47. $Middlename = $Contents->appendChild($dom->createElement('Middlename'));
  48. // добавление элемента <DateOfBirth> в <Contents>
  49. $DateOfBirth = $Contents->appendChild($dom->createElement('DateOfBirth'));
  50. // добавление элемента <IdSeries> в <Contents>
  51. $IdSeries = $Contents->appendChild($dom->createElement('IdSeries'));
  52. // добавление элемента <IdNum> в <Contents>
  53. $IdNum = $Contents->appendChild($dom->createElement('IdNum'));
  54. //////////////////////////////// //////////////////////////////// /////////////////
  55. //////ЗАПОЛНЕНИЕ XML-ФАЙЛА ДАННЫМИ
  56. $Id->appendChild($dom->createTextNode('***'));
  57. //$MemberCode->appendChild($dom->createTextNode('0011221100'));
  58. $User->appendChild($dom->createTextNode('######'));
  59. $Password->appendChild($dom->createTextNode('########'));
  60. $Surname->appendChild($dom->createTextNode($Surname1));
  61. $Firstname->appendChild($dom->createTextNode($Firstname1));
  62. $Middlename->appendChild($dom->createTextNode($Middlename1));
  63. $DateOfBirth->appendChild($dom->createTextNode($DateOfBirth1));
  64. $IdSeries->appendChild($dom->createTextNode($IdSeries1));
  65. $IdNum->appendChild($dom->createTextNode($IdNum1));
  66. //////////////////////////////// //////////////////////////////// /////////////////
  67. //генерация xml
  68. $dom->formatOutput = true;
  69. // Сохранить XML как строку или файл
  70. $test1 = $dom->saveXML(); // передача строки в test1
  71. $dom->save('test1.xml'); // сохранение файла
  72. //////////////////////////////// /////////////////////////
  73. ///////////////КОНЕЦ СОЗДАНИЯ XML///////////////////////
  74. //////////////////////////////// ///////////////////////////////
  75. $respons = PostXML('http://###########', base64_encode($test1));//ответ сервера
  76. $res->asXML('otvet.xml');
  77. $surname_->Record->surname;
  78. $firstname_->Record->firstname;
  79. $middlename_->Record->middlename;
  80. $dateofbirth_->Record->dateofbirth;
  81. $idseries_->Record->idseries;
  82. $idnum_->Record->idnum;
  83. $issuedate->Record->issuedate;
  84. $regdate->Record->regdate;
  85. $regarea->Record->regarea;
  86. $regdistrict->Record->regdistrict;
  87. $regcity->Record->regcity;
  88. $regplace->Record->regplace;
  89. $regstreet->Record->regstreet;
  90. $reghousenumber->Record->reghousenumber;
  91. $regbuild->Record->regbuild;
  92. $regappartment->Record->regappartment;
  93. $note->Record->note;
  94. ?>


Задача: Заполняем форму информацией, формируем XML-запрос с заранее оговоренной структурой, отправляем его на URL, там его обрабатывают, и присылают ответ в формате XML также с заранее известной структурой.
Доп. информация:
1.как видно из скрипта, данные кодируются в base64 и ответ тоже приходит закодированным, нужно его раскодировать и сохранить xml в файл otvet.xml
2.для авторизации на удаленном сервере используется membercode, user,password,а также д.б. установлен сертификат удостоверяющего центра. Запрос д. б. подписан эцп
в формате РКС#7. на компютере установлено криптоПРО.
3.Обмен между мной и urlом подразумевается в онлайновом синхронном режиме

При попытке отправки появляется ошибка:
Fatal error: Call to a member function asXML() on a non-object in ...\2.php on line 78

Подскажите пожалуйста, как решить данную проблему?
Возможно нужно совсем не так делать, как я делаю?

(Отредактировано автором: 07 Ноября, 2013 - 14:00:28)

 
 Top
caballero
Отправлено: 07 Ноября, 2013 - 13:39:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




ну так пишет же ошибку
посмотри что приходит параметром в simplexml_load_string - явно кривые данные раз не может распарсить


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
armancho7777777 Супермодератор
Отправлено: 07 Ноября, 2013 - 13:39:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




Я бы Вам помог, но код не читаем.
Приведите его в нужный вид.
Для этого есть кнопочки над полем ввода.
 
 Top
Santer063
Отправлено: 07 Ноября, 2013 - 14:01:15
Post Id


Новичок


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


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




armancho7777777 пишет:
Я бы Вам помог, но код не читаем.
Приведите его в нужный вид.
Для этого есть кнопочки над полем ввода.

Извиняюсь, поправил
 
 Top
armancho7777777 Супермодератор
Отправлено: 07 Ноября, 2013 - 18:01:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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






Результат сюда выложите.

(Отредактировано автором: 07 Ноября, 2013 - 18:02:51)

 
 Top
Santer063
Отправлено: 11 Ноября, 2013 - 10:31:37
Post Id


Новичок


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


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




boot(false) string""
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« XML и его обработка »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB