Показано с 1 по 8 из 8

Тема: Связь UCS-премьера (внешний протокол) с сайтом на php

  1. #1
    Новичок
    Регистрация
    10.10.2011
    Адрес
    РФ
    Сообщений
    3
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)

    Связь UCS-премьера (внешний протокол) с сайтом на php

    Здравствуйте.

    Такая задача:
    есть сайт на php, есть UCS-премьера (внешний протокол).
    В настройках внешнего протокола разрешены запросы с ip сервера, где расположен сайт. Связь с сервером есть, все пингуется. НО, при запросе из адресной строки браузера вида:
    http://айпишник:порт/?0000000100&Ser...sion=3&Expect=
    получаю ответ от сервера:
    'Сделан не верный запрос'.

    В логах запрос оказывается пустой:
    10.10.2011 15:13:59.956> Accept: TCPSocket=224
    10.10.2011 15:14:00.050> Receive: TCPSocket=704
    10.10.2011 15:14:00.050> TClientList.FindBySocket(704)
    10.10.2011 15:14:00.050> i=1 Socket=704
    10.10.2011 15:14:00.050> [№49 192.168.200.2 704:52596 2] Receive Start
    10.10.2011 15:14:00.065> Close: TCPSocket=704
    10.10.2011 15:14:00.065> TClientList.FindBySocket(704)
    10.10.2011 15:14:00.065> i=1 Socket=704
    10.10.2011 15:14:00.065> [№49 192.168.200.2 704:52596 6] Close
    10.10.2011 15:14:00.065> [№49 192.168.200.2 704:52596 6] Close: Query=
    10.10.2011 15:14:00.065> [№49 192.168.200.2 704:52596 6] Close: Time=0:00.094 ReadBytes=470 WriteBytes=193
    10.10.2011 15:14:06.065> [№48 192.168.200.2 728:52592 10] Close Socket: Time=0:00.047
    10.10.2011 15:14:06.065> [№48 192.168.200.2 728:52592 10] Delete(0)

    А вот пример работающего запроса:
    10.10.2011 15:15:58.065> Accept: TCPSocket=224
    10.10.2011 15:15:58.159> Receive: TCPSocket=728
    10.10.2011 15:15:58.159> TClientList.FindBySocket(728)
    10.10.2011 15:15:58.159> i=1 Socket=728
    10.10.2011 15:15:58.159> [№51 192.168.200.2 728:52602 2] Receive Start
    10.10.2011 15:15:58.190> Close: TCPSocket=728
    10.10.2011 15:15:58.190> TClientList.FindBySocket(728)
    10.10.2011 15:15:58.190> i=1 Socket=728
    10.10.2011 15:15:58.190> [№51 192.168.200.2 728:52602 6] Close
    10.10.2011 15:15:58.206> [№51 192.168.200.2 728:52602 6] Close: Query=0000000100&ServiceID=1234567890&QueryCode=Lo gin&CardCode=1&CardPIN=1111&Encoding=Windows-1251&Version=3&Expect=
    10.10.2011 15:15:58.206> [№51 192.168.200.2 728:52602 6] Close: Time=0:00.125 ReadBytes=111 WriteBytes=555

    В чем может быть дело?
    Заранее спасибо.

  2. #2
    Разбирающийся Аватар для Mikkey O'Fish
    Регистрация
    26.09.2010
    Адрес
    Ryazan
    Сообщений
    593
    Поблагодарил(а)
    0
    Благодарностей: 1 (сообщений: 1)
    Цитата Сообщение от ditas Посмотреть сообщение
    10.10.2011 15:14:00.065> [№49 192.168.200.2 704:52596 6] Close: Time=0:00.094 ReadBytes=470 WriteBytes=193
    10.10.2011 15:14:06.065> [№48 192.168.200.2 728:52592 10] Close Socket: Time=0:00.047
    У тебя отвечающий сокет по разному прописан. Может все-таки 728?

  3. #3
    Новичок
    Регистрация
    10.10.2011
    Адрес
    РФ
    Сообщений
    3
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)
    О как...
    А каким образом это можно исправить?

  4. #4
    Разбирающийся Аватар для Mikkey O'Fish
    Регистрация
    26.09.2010
    Адрес
    Ryazan
    Сообщений
    593
    Поблагодарил(а)
    0
    Благодарностей: 1 (сообщений: 1)
    Посмотри в настройках внешнего протокола. Посмотри инишники или конфиги в Премьеровском каталоге

  5. #5
    Новичок
    Регистрация
    10.10.2011
    Адрес
    РФ
    Сообщений
    3
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)
    А не может дело быть в изначальном подходе к передаче запроса?

    Будет ли запрос, в принципе, работать из браузера, переданный, как обычный GET запрос?
    Может быть нужно использовать для связи с сервером UCS-премьера сокеты (fsockopen) или cURL?
    Непонятно как работает UCS-премьера внешний протокол. Иными словами, допустимо ли вообще обращаться к серверу таким образом:
    http://192.168.200.1:9194/?000000010...sion=3&Expect=

    P.S. сервер в локальной сети.

  6. #6
    Гуру Аватар для count
    Регистрация
    17.05.2007
    Адрес
    Shadow
    Сообщений
    369
    Поблагодарил(а)
    1
    Благодарностей: 1 (сообщений: 1)
    Цитата Сообщение от Mikkey O'Fish Посмотреть сообщение
    У тебя отвечающий сокет по разному прописан. Может все-таки 728?
    Где можно подробнее прочитать про "отвечающие сокеты" и их настройку? ()
    Может быть вы чего-то путаете (например номер сокета и номер порта)?

    Цитата Сообщение от ditas Посмотреть сообщение
    Будет ли запрос, в принципе, работать из браузера, переданный, как обычный GET запрос?
    Нет. Это ж не Get...
    Цитата Сообщение от ditas Посмотреть сообщение
    Может быть нужно использовать для связи с сервером UCS-премьера сокеты (fsockopen) или cURL?
    Верно, сокеты - основа интернетов.
    Цитата Сообщение от ditas Посмотреть сообщение
    Непонятно как работает UCS-премьера внешний протокол.
    Документация с протоколом не предоставляется? Запросите у разработчиков.
    Цитата Сообщение от ditas Посмотреть сообщение
    Иными словами, допустимо ли вообще обращаться к серверу таким образом:
    http://192.168.200.1:9194/?000000010...sion=3&Expect=
    Нет. Это ни разу не HTTP.
    no room basic
    system halted...

  7. #7
    Новичок
    Регистрация
    15.11.2012
    Адрес
    Россия
    Сообщений
    1
    Поблагодарил(а)
    0
    Благодарностей: 0 (сообщений: 0)
    Так как всё таки послать запрос к UCS-Преьера (внешний протокол) посредством PHP?
    Напишите пример пожалуйста.

  8. #8
    Разбирающийся
    Регистрация
    18.10.2012
    Адрес
    Новосибирск, Омск
    Сообщений
    5,362
    Поблагодарил(а)
    188
    Благодарностей: 461 (сообщений: 364)
    Если версия Премьеры 3.16 и ниже, то можно работать таким кодом

    Код:
    $fp = fsockopen($ip, $port, $en, $es, 15);
    if(!$fp)
                exit('Connection failed. Error #'.$en.': '.$es);
    $str_query = 'тут текст запроса';
    fwrite($fp, $str_query);
    
            $ret = '';
            while(!feof($fp)) {
         $s = fgets($fp,256);         
                   echo $s;
            }
            fclose($fp);
    Т.е. открываем сокет и читали из него пока не конец потока feof($fp).


    Для новых более свежих версий Премьеры надо пользовать вот такой, более правильный, код
    Код:
    $fp = fsockopen($ip, $port, $en, $es, 7);
    if(!$fp)
                exit('Connection failed. Error #'.$en.': '.$es);
    $str_query = 'тут текст запроса';
    fwrite($fp, $str_query);
    $n = fgets($fp,11);         
    $s = fgets($fp,$n+1);         
    fclose($fp);

Похожие темы

  1. Ответов: 11
    Последнее сообщение: 19.02.2016, 16:13
  2. ПДС + Премьера
    от Barzometr в разделе UCS-Премьера
    Ответов: 18
    Последнее сообщение: 20.10.2014, 20:29
  3. По Премьера
    от gramz в разделе UCS-Премьера
    Ответов: 9
    Последнее сообщение: 20.10.2012, 14:44
  4. как настроить станции на протокол TCPIP
    от zeus_s в разделе RK: Сетевые настройки
    Ответов: 19
    Последнее сообщение: 26.04.2011, 07:40

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •