Jump to content
  • 0

Передать xml по ссылке, так что бы он записался в логи хостинга


fiver
 Share

Question

Сталкнулся с такой хренью, стоит задача по html запросу сформировать и отправить ответ в формате XML, кодировка UTF-8 (Content-type: text/plain).

Т.е. мне приходит POST запрос, я его обрабатываю, формирую xml и отсылаю по адресу сайта (адрес заранее известен типа: http://site.ru/id/ip/whrh/)

Загвоздка стала в том, как отправить мне готовый xml по ссылке.

Вот код моего готового xml, я знаю как например сохранить его, или отправить на печать.



$dom = new domDocument("1.0", "utf-8");

$root = $dom->createElement("response");
$dom->appendChild($root);

$result = $dom->createElement("result", 0);
$discr = $dom->createElement("sum", OK!);

$root->appendChild($result);
$root->appendChild($discr);

$dom-> А ЗДЕСЬ ДОЛЖНО БЫТЬ ЧТО ТО ПОЗВОЛЯЮЩЕЕ ОТПРАВИТЬ ВСЕ ЭТО ПО ССЫЛКЕ http://site.ru/id/ip/whrh/


Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Сталкнулся с такой хренью, стоит задача по html запросу сформировать и отправить ответ в формате XML, кодировка UTF-8 (Content-type: text/plain).

Т.е. мне приходит POST запрос, я его обрабатываю, формирую xml и отсылаю по адресу сайта (адрес заранее известен типа: http://site.ru/id/ip/whrh/)

Превратите XML в текст при помощи метода saveXML()

И сделайте curl'ом POST-запрос по указанному адресу.

Link to comment
Share on other sites

  • 0

Превратите XML в текст при помощи метода saveXML()

И сделайте curl'ом POST-запрос по указанному адресу.

Возникают вопроосы. Тут в заголовке я указал, что те, кому передаю этот xml, читают его в логах.

А куда передастся этот запрос в данном случае? В логи хостинга? Или должен будет принят скриптом и извлечен из глабального массива POST?

Я не очень силен в этих материях. Я тут набросал то, что вы порекомендовали. Так сработает?

$dom = new domDocument("1.0", "utf-8"); // Создаём XML-документ версии 1.0 с кодировкой utf-8

$root = $dom->createElement("response"); // Создаём корневой элемент
$dom->appendChild($root);

$result = $dom->createElement("result", 0);
$disk = $dom->createElement("disk", 1);

$root->appendChild($result);
$root->appendChild($disk);

$dom->saveXML();


$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://site.ru/id/ip/whrh');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, 'xml='.$dom.'');

curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 10.00');
$res = curl_exec($curl);

if(!$res){
$error = curl_error($curl).'('.curl_errno($curl).')';
echo $error;
}
else
{
echo "Все ОК!";
}
curl_close($curl);

Edited by fiver
Link to comment
Share on other sites

  • 0

Давайте начнем сначала. Какую задачу вам нужно решить?

Мне методом пост передается запрос, я должен его обработать и исходя из результатов запроса - ЦИТИРУЮ:

В ответ на HTTP-запрос формируется ответ (response) в формате XML, кодировка UTF-8 (Content-type: text/plain):

На вопрос у принимающей стороны, о том каким макаром вы обрабатываете переданный хмл, был получен ответ, что он записывается в логи.

Собственно и все.

Если есть какие то конкретные вопросы, задавайте, я попытаюсь все разузнать.

Link to comment
Share on other sites

  • 0

Ну, так вам всего лишь нужно ответить на этот запрос. Но логи бывают разные, что именно нужно логировать и где?

Уважаемый s0rr0w!

Спасибо что возитесь с моей проблеммой.

Я понимаю, что мне надо ответить на запрос.

У меня попросили ссылку на скрипт, куда передают запрос типа //moy-site.ru/script.php?id=777

После чего в скрипте принимается параметр id, я его проверяю и формирую xml типа:


<response>
<result>0</result>
<descr>все ок!</descr>
</response>

или

<response>
<result>1</result>
<descr>все хреново!</descr>
</response>

C первой частью проблемм нет, все обрабатываю, формирую xml.

А вот дальше в инструкции написанно

В ответ на HTTP-запрос формируется ответ (response) в формате XML, кодировка UTF-8 (Content-type: text/plain):

<?xml version="1.0" encoding="UTF-8"?>

<response>

<result>RESULT</result>

<descr>DESCRIPTION</descr>

</response>

Что сие означает, как это передается, куда это должно быть записанно, мне непонятно.

Именно поэтому я и обратился на форум, что бы спросить у тех, кто подобное делал.

Какие логи как и куда, представления не имею.

Просто думаю, что для тех кто реализовавал оплату посредством отправки смс и работал с сервисами которые называют себя агрегаторами, это все понятно сразу.

Они ведут обмен данными посредством передачи этих самых xml

Link to comment
Share on other sites

  • 0

Что сие означает, как это передается, куда это должно быть записанно, мне непонятно.

Вам всего лишь нужно сделать


header( "Content-type: text/plain" );
echo( $dom->saveXML() );

Если рассматривать с точки зрения клиента, то он на свой POST или GET запрос должен получить данные какого-то конкретного типа, например text/plain, или text/html

Как именно формируется этот контент клиента не волнует. С точки зрения сервера, получив задание, он должен обработать запрос, и выдать его в ответ пользователю.

Link to comment
Share on other sites

  • 0

Если рассматривать с точки зрения клиента, то он на свой POST или GET запрос должен получить данные какого-то конкретного типа, например text/plain, или text/html

Как именно формируется этот контент клиента не волнует. С точки зрения сервера, получив задание, он должен обработать запрос, и выдать его в ответ пользователю.

И просто выведенная запись может попасть каким то образом им в логи?

А если они мне так же передают информацию? Т.е. тоже просто выводят

<?xml version="1.0" encoding="utf-8"?>
<response><result>0</result>

Возможно извлечь result=0 ?

Link to comment
Share on other sites

  • 0

И просто выведенная запись может попасть каким то образом им в логи?

Если они их ведут, то да.

Возможно извлечь result=0 ?

Да, превратите этот текст в SimpleXML-объект и извлекайте на здоровье

А если вы дадите документацию по интеграции сервисов, то дело пойдет гораздо быстрее.

Link to comment
Share on other sites

  • 0

А если вы дадите документацию по интеграции сервисов, то дело пойдет гораздо быстрее.

На всякий случай сделал 2 вида. просто вывод.

И передача POST.

Отпишусь.

СПАСИБО!

Edited by fiver
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy