Обработать HTTP XML запрос

DevConf 2017 - видео с конференции, успей до 17 июля | Проверенные VDS на SSD в Европе и России

Тема в разделе "PHP & XML-технологии", создана пользователем Олег_78, 18 май 2017.

  1. Олег_78

    Олег_78 Новичок

    Сообщения:
    2
    Ваш город:
    Киев
    Adress:
    Kiev, Ukraine
    Country:
    Location on Map:
    Добрый день!
    Прошу помощи в следующем. На сокет приходит запрос следующего вида (принимал с помощью nc):

    POST / HTTP/1.1
    Content-Type: text/xml;charset=utf-8
    Host: 192.168.1.8:12000
    Content-Length: 199
    Expect: 100-continue
    Connection: Close

    <message><service id="single" source="F09202"/><to>460</to><body content-type="text/plain">Сообщение</body></message>
    Мне нужно обработать данные и ответить:

    <status id="12345671174984921384" date="Wed, 28 Mar 2017 12:35:00 +0200">
    <state>Accepted</state>
    </status>​

    Как это правильно сделать?
    В вэб технологиях разбираюсь плохо. Первое что приходит в голову, это распарсить sed awk и ответить с через неткат. Это я осилю. Но это же костыль. Если писать на пхп то нужно ли использовать апач, или сам скрипт на пхп должен слушать сокет? Вот на пхп я вряд ли осилю.
    Подскажите как реализовать.
     
  2. WMix

    WMix герр M:)ller

    Сообщения:
    5.655
    Adress:
    Waiblingen, Germany
    Country:
    Location on Map:
    как хочешь, главно чтоб достучаться можно было
    к примеру
    Код:
    print_r(simplexml_load_string('<message><service id="single" source="F09202"/><to>460</to><body content-type="text/plain">Сообщение</body></message>'));
     
  3. Олег_78

    Олег_78 Новичок

    Сообщения:
    2
    Ваш город:
    Киев
    Adress:
    Kiev, Ukraine
    Country:
    Location on Map:
    Спасибо. Вроде разобрался.
    Еще остается такой вопрос: Как с помощью simplexml получить корневой элемент? В гугле пишут что никак. В моем случае в XML сообщении корневой элемент содержит тип этого сообщения.
     
  4. WMix

    WMix герр M:)ller

    Сообщения:
    5.655
    Adress:
    Waiblingen, Germany
    Country:
    Location on Map:
    Код:
    php > $xml = simplexml_load_string('<message></message>');
    php > echo $xml->getName();
    message
    php >
    ну или другими словами $xml это и есть корневой элемент