Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обработать запрос на сервере и отправить ответ.

26K
04 ноября 2010 года
cabra
23 / / 14.11.2007
Всем привет.
Я отправляю запрос на адрес при помощи курла вот такой функций:

 
Код:
function _GetAnswer($address, $xml){
    $ch = curl_init($address);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    $result=curl_exec($ch);
    return $result;
}

Но на адресе($adress), на который я посылаю этот запрос, мне нужно обработать значение $xml.
В гугле выдает сообщения в большинстве своем на тему "как отправить сообщение". Но, грубо говоря, серверной части скрипта нет.
244
04 ноября 2010 года
UAS
2.0K / / 19.07.2006
И чё предлагаете? Чтобы за вас код написали? Читайте ман по PHP, в частности про массивы $_POST и $_FILES
26K
04 ноября 2010 года
cabra
23 / / 14.11.2007
UAS, меня интересует как раз те направления где можно искать. Если бы вы повнимательней читали моё сообщение, то поняли, что в своих поисках я зашел в тупик и требуется помощь.

Но вероятно, какой язык такие и кодеры.
244
04 ноября 2010 года
UAS
2.0K / / 19.07.2006
Кодер я нормальный, а говорить так как раз и приходится, потому что скорее вы относитесь к тем "какой язык такие и кодеры".

Поискать можно на php.net. О том, как обрабатывать входящие данные написано в любом, даже самом дурацком, учебнике по PHP.
Для работы с XML используйте simpleXML, или проще вбейте в поиске на php.net xml.

Ваш пост я читал - там не указано что конкретно вам надо. Под "Но, грубо говоря, серверной части скрипта нет" я очевидно вижу намек на "напишите мне серверную часть". Но может вы имели в виду "как принять файл", а может "как обработать xml", а может ещё хз что?
Полистайте первые 20-30 страниц любого учебника.
26K
04 ноября 2010 года
cabra
23 / / 14.11.2007
Хм в функции getanswers есть переменная $xml; в принципе это может означать, то что мне нужно не файл отправить а строку хмл. И далее если вам нужен конкретный вопрос то:

Есть два файла index.php и job.php. В скрипте индекс есть форма и скрипты генерации и обработки формы. Скрипт обработки посылает в файл job.php строку $xml. Она там обрабатывается и результатом обработки будет другой код xml.
Внимание вопрос: как отправить из файла job.php в файл index.php xml строку, который запишется в переменную $result функции getans..... ?

P.S. Язык для меня в принципе новый. Вернее отвык от него. Сам я специализируюсь в Java и немного в Delphi. В обоих случаях, я ни разу не получил ответ типа И чё предлагаете? Чтобы за вас код написали?. Обычно или темы остаются без ответа когда задача особенно запутанная, либо люди ссылаются на конкретные примеры, может и не очень полные, но по ним можно что-то сделать, либо же указывают конкретные места в документации где стоит смотреть.
Опять же PHP отличается парадигмой программирования и к примеру классы здесь вообще только начинают набирать обороты. Поэтому язык для меня в принципе не очень приятен.
13
04 ноября 2010 года
RussianSpy
3.0K / / 04.07.2006
Я так и не понял, что вы хотите. Вам непонятно как отправленные данные принимать?
26K
04 ноября 2010 года
cabra
23 / / 14.11.2007
Отправляю данные в job.php они содержатся в массиве $_POST хотя и частично обрезанные, но я думаю что это касяк с заголовками какой-то.

Если брать конкретно функцию которую я привел как пример. Что за $result? Откуда он берется? Какая строчка в job.php будет отвечать за значение которое получит это переменная?
Может стоит отправить ещё один пост? Или есть какой-то специфичный return?
$result=curl_exec($ch);
return $result;
26K
04 ноября 2010 года
cabra
23 / / 14.11.2007
У меня задание такое странное вот.
Есть хмл услуга. Она принимает на вход сгенерированную мной строку хмл, обрабатывает и присылает значение. Мне нужно эту услугу тоже написать самому, чтобы она пользователю на его ввод присылала вывод. Типа такого. Я понимаю что для решения той задачи которая у меня есть мне хмл вообще не нужен, но по заданию требуется чтобы я запрос и ответ на него в виде хмл представлял.
1.9K
04 ноября 2010 года
Werky
129 / / 14.01.2006
Цитата: cabra

Есть хмл услуга.


XML это расширяемый язык разметки и услугой он быть никак не может.

Значит вы либо должны отправлять данные на сервер которые находятся формате хмл либо по запросу выдавать данные в формате хмл.

В $result будет содержаться всё то что быдет выведено этим скриптом на экран. Тоесть если Вы напишите $address="http://my.site.ru" то в $result html-код сайта.

И вообще я смутно представляю что Вам нужно сделать. Ставьте конкретную задачу. Например: "я отправляю данные в таком формате (пример) нужно получить в таком (пример), как лучше реализовать?".

26K
04 ноября 2010 года
cabra
23 / / 14.11.2007
Sisend: XML с именами городов :

<SearchCarRQ>

<Country name='Austria'>

<City>Linz</City>

<City>Salzburg</City>

</Country>

<Country name='Portugal'>

<City>Faro</City>

</Country>

</SearchCarRQ>

Выход: для каждой страны для каждого города 5 самый дешевых машин по возрастанию.

<SearchCarRS>

<Country name='Austria'>

<City name='Linz'>

<Car price='34.33'>BMW X3</Car>

<Car price='34.34'>Opel Zafira</Car>

<Car price='34.40'>Renault Laguna</Car>

<Car price='35.00'>Volvo S40</Car>

<Car price='40.00'>Mercedes-Benz E Class</Car>

</City>

<City name='Salzburg'>

<Car price='31.03'>Opel Zafira</Car>

<Car price='32.00'>Skoda Octavia</Car>

<Car price='35.23'>Volkswagen Lupo</Car>

<Car price='47.12'>Fiat Panda</Car>

<Car price='49.11'>Fiat Bravo</Car>

</City>

</Country>

<Country name='Portugal'>

<City name='Faro'>

<Car price='40.12'>BMW Z4 Coupe</Car>

<Car price='42.12'>BMW X3</Car>

<Car price='43.00'>Opel Astra</Car>

<Car price='45.23'>Volvo S40</Car>

<Car price='50.00'>Skoda Octavia</Car>

</City>

</Country>

</SearchCarRS>


Это я отправляю в $xml. Имя изменил на ид, для удобства.
<SearchCarRQ><Country id="2"><City>2</City></Country><Country id="155"><City>3040</City></Country></SearchCarRQ>

До другой страницы доходит лишь:
\"2\"><City>2</City></Country><Country id=\"155\"><City>3040</City></Country></SearchCarRQ>

Теперь я разобрался, что ничего обратно не отсылается, лишь то что печатается. в этом был основной вопрос, а добавочный: почему у меня не все приходит целиком?

P.S. Сейчас, убрав после id= двойные кавычки этот глюк исчез, так что все пучком ;)

Остался вопрос: получается постом я посылаю запрос, в job.php допустим печатается табличка и содержимое этой таблички записывается в $result?
244
05 ноября 2010 года
UAS
2.0K / / 19.07.2006
Цитата:
Остался вопрос: получается постом я посылаю запрос, в job.php допустим печатается табличка и содержимое этой таблички записывается в $result?


Все никак не до мануала?

[QUOTE="php.net/curl_exec"]Returns TRUE on success or FALSE on failure. However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, FALSE on failure.[/QUOTE][QUOTE="php.net/curl_setopt"]CURLOPT_RETURNTRANSFER TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.[/QUOTE]
Из чего следует, что действительно в конкретном примере будет возвращаться данные, отдаваемые страницей.

В xml не забывайте включать заголовочный тег <?xml ... ?> с указанием кодировки, дабы избежать последующих проблем при обработке xml с помощью библиотек.

Цитата:
До другой страницы доходит лишь:


Из-за двойных кавычек такого быть не должно, код отправки кривой - тут надо смотреть сам php-код с формированием xml для отправки, ибо:
[quote="php.net/curl_setopt"]CURLOPT_POSTFIELDS The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like 'para1=val1&para2=val2&...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data. As of PHP 5.2.0, files thats passed to this option with the @ prefix must be in array form to work.[/quote]

26K
05 ноября 2010 года
cabra
23 / / 14.11.2007
Цитата: UAS
будет возвращаться данные, отдаваемые страницей.


Что значит отдаваемые страницой?
echo? return? set?

1.9K
05 ноября 2010 года
Werky
129 / / 14.01.2006
Цитата: cabra
Что значит отдаваемые страницой?
echo? return? set?



это значит

Цитата:

печатается табличка и содержимое этой таблички записывается в $result?



И наконец прочитайте мануал и чем отличаются те конструкции, которые вы упомянули.

Дальше, ХМЛ нужно что бы был валидный это раз (для этого можно просто сохранить этот текст в файл и открыть например в ИЕ он напишет где ошибка), во вторых передача через пост это не значит запихнуть этот ХМЛ в переменную, сама переменная должна быть массивом $xml["request"]="здесь хмл разметка" и в серверном скрипте брать эти данные из $_POST["request"].

26K
05 ноября 2010 года
cabra
23 / / 14.11.2007
чем отличается экхо от ретурна я знаю. сет это уже из явы привычка.

Короче если я в job.php сделаю echo $_POST["request"] то в $result будет напечатанная строка?
1.9K
05 ноября 2010 года
Werky
129 / / 14.01.2006
Да. Пипец а потестрировать уже никак не получается? Это было бы быстрее чем спросить и получить ответ.
244
05 ноября 2010 года
UAS
2.0K / / 19.07.2006
Обычно люди, программирующие на яве, да и на любом другом нормально языке в php разибраются буквально за пару дней. Не пойму, че вы тут мудрите.
Как по вашему страница может отдавать return? Протокол http хоть примерно знаете? Так вот, там посылается текстовый запрос и возвращается сервером текстовый ответ. В скрипте все выводится через echo, print и прочими подобными и не очень командами.

Цитата:
Короче если я в job.php сделаю echo $_POST["request"] то в $result будет напечатанная строка?

Возьмите да проверьте. Должна быть, если отправите корректно данные курлом.

26K
05 ноября 2010 года
cabra
23 / / 14.11.2007
Прошу прощения, проверить не было возможности. Сейчас только смог все проверить :)
26K
05 ноября 2010 года
cabra
23 / / 14.11.2007
Ну сам код генерации хмл вот такой, есть небольшая корявость. В принципе единственная проблема с двойными кавычками.
$xml ='<?xml version="1.0" encoding="UTF-8"?>';
$xml.= '<SearchCarRQ>';
$prev_count = 0;
foreach($selects as $current){
$ids = explode("/", $current);
if($ids[0] != $prev_count){
if($prev_count != 0){
$xml.='</Country>';
}
$xml.='<Country id="'.$ids[0].'">';
}
$xml.='<City>'.$ids[1].'</City>';
$prev_count = $ids[0];
}
$xml.='</Country></SearchCarRQ>';

P.S. Практически исправил.
$_xml = array("xml" => $xml);
Теперь только дело в том что доходит со слэшами у кавычек :)
P.P.S. нашел stripslashes, убирающую слэши
1.9K
05 ноября 2010 года
Werky
129 / / 14.01.2006
Цитата: cabra

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



Вы указали UTF-8, а само содержимое тоже в UTF-8? Я подозреваю что нет...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог