Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > ответ методом POST


Автор: Demogargon 28.8.2009, 10:46
Передо мной стоит задача подключить смс службу к сайту. Работает все  приблизительно так - ко мне приходят XML данные методом POST, я должен тут же ответить. Все хорошо. Я написал функцию которая отправлют через соккеты данные, и еще фун-ия которая принимает данные. У меня все это работает. Но когда тестирует смс служба, то к ним ответ не приходит. Они сказали мне, что ответ должен быть осоществлен в эту же сессию. Теперь вопрос. Как реаизовать отправку данных методом POST в одну сессию? 

Автор: icewind 28.8.2009, 10:53
Возможно речь идет об одном сокете. То есть сначала ты с него читаешь xml, а потом пишешь в него же ответ

Автор: Ипатьев 28.8.2009, 11:23
непонятно, зачем через сокеты отправлять ответ.
ответ на обычную форму, с записью в гостевую книгу, отправлять клиенту через сокеты в голову не приходило?

Автор: Demogargon 28.8.2009, 11:37
Здесь я читаю данные пришедшие мне
Код

// читаем
     $xml_string = file_get_contents("php://input");
// открываем файл
     $f = fopen('xml.txt', "a");
     if (!$xml = simplexml_load_string($xml_string)){fwrite($f, "ERROR");  exit;}
// вытаскиваем то что нас интересует
     fwrite($f, $xml->message["id"]." ".$xml->message->content);
     fclose($f);

Здесь я отправляю
Код

     function sms_send_answer($massage){
        $str  = "";
                $str .='<?xml version="1.0"  encoding="UTF-8"?>';
        if ($massage === null) {
            $str .= '<sms-response version="1.0"/>';
            return $str; }

        $str .= '<sms-response version="1.0">';
        $str .= '<message id="1234" >';
        $str .= '<content type="text/plain">'.htmlspecialchars  ($massage).'</content>';
        $str .= '</message>';
        $str .= '</sms-response>';
        return $str;
     }
     $data = sms_send_answer("test message");
     $fp = fsockopen("forum.skidkinavse.ru", 80, $errno, $errstr, 10);
     $out = "POST /save.php HTTP/1.1\n";
     $out .= "Host: forum.skidkinavse.ru\n";
     $out .= "Referer: forum.skidkinavse.ru/\n";
     $out .= "User-Agent: Opera\n";
     $out .= "Content-Type: application/x-www-form-urlencoded\n";
     $out .= "Content-Length: ".strlen($data)."\n\n";
     $out .= $data."\n\n";
     if (!fputs($fp, $out)) {echo("net soedineniya");}
           fclose($fp);


Как мне отослать не через соккеты и в одну сессию?

Автор: IZ@TOP 28.8.2009, 13:03
Demogargon, а можно ссылку на API смс-сервиса? Я подозреваю, что вы должны просто вывести в качестве ответа на POST запрос свой XML. 

Автор: Ипатьев 28.8.2009, 13:29
он, похоже, только писать умеет. 

Автор: Demogargon 31.8.2009, 13:42
ссылки на API нет, сервис http://www.smspartner.ru

Автор: IZ@TOP 31.8.2009, 15:20
Demogargon, если у них нет документации по взаимодействию с собственным сервисом, как с ними вообще работать тогда?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)