На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF
  
> Oracle, XML, php , Проблема вызова php из oracle
    Доброго суток. Делаю впервые on-line протокол, так что сильно не бейте.
    Смысл проблемы:
    На unix сервере лежат .php которые нужно дёргать из oracle по средствам utl_http, передавая "на вход" xml-текст запроса.
    ExpandedWrap disabled
          utl_http.set_body_charset( charset => 'windows-1251' );
          utl_http.set_transfer_timeout( 60 );
          req := utl_http.begin_request(g_url,'POST', utl_http.HTTP_VERSION_1_1 );
          utl_http.set_header( Req, 'User-Agent', 'Mozilla/5.0' );
          utl_http.set_header( Req, 'Content-Type', 'text/xml; charset=windows-1251' );
          utl_http.set_header( Req, 'Content-Length', lengthb( Data ));
          
           Pos := 1;
              while true loop
              Str := substr( Data, Pos, 2000 );
              Pos := Pos + 2000;
              exit when Str is null;
              utl_http.write_text( Req, Str );
            end loop;
       
          ClearTmpCLOB( Answer );
       
          resp := utl_http.get_response(req);
            while true loop
              utl_http.read_text( Resp, Str, 2000 );
              dbms_lob.WriteAppend( Answer, length( Str ), Str );
              exit when Str is null or length( Str ) < 2000;
            end loop;
            utl_http.end_response( Resp );
            Doc := XMLType.createXML( Answer );

    где Data
    ExpandedWrap disabled
        
       q_head        constant varchar2(50) := '<?xml version="1.0" encoding="utf-8">';
       siteURL       constant varchar2(100):= путь_к_папке_на_сервере;
      ....
       data:=q_head ||
                   '<rta_request>'||
                       '<act>0</act>' ||
                  '</rta_request>';
        g_url    := siteURL || 'SubComp1.php ';

    Когда запускаю процедуру без текста, точнее в SubComp1.php прописываю "в лоб" текст xml (благо именно этот запрос фиксирован, но следующие уже будут - нет), то всё нормально отрабатывает
    ExpandedWrap disabled
      $body="<?xml version=\"1.0\" encoding=\"utf-8\"?>";
      $body.="<rta_request>";
      $body.="<act>0</act>";
      $body.="</rta_request>";
      $params = array('req' => $body);
      .....
      curl_setopt($ch, CURLOPT_POSTFIELDS,     http_build_query($params));

    приходит ответ, я его разбираю - всё замечательно, но как только пытаюсь $body получить через
    ExpandedWrap disabled
      $body=trim($GLOBALS['HTTP_RAW_POST_DATA']);

    то php не запускается
    Пока что я новичок в теме - если кто знает, где ошибка?
      Сложно быть идиотом... блин... :crazy:
      ExpandedWrap disabled
        q_head        constant varchar2(50) := '<?xml version="1.0" encoding="utf-8">';

      А кто последний вопрос за меня ставить будет? Ага, вот и я о том же...
      Но ещё столкнулся с такой интересной штукой:
      При комментировании в .php
      ExpandedWrap disabled
        $body="<?xml version=\"1.0\" encoding=\"utf-8\"?>";
        $body.="<rta_request>";
        $body.="<act>0</act>";
        $body.="</rta_request>";

      Если этот блок брать в /* */, то всё нормально воспринимается, а если комментировать каждую строчку путём "//", то на первой строке спотыкается, видимо не нравится обратный слэш. Но это уже вопрос к php
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0223 ]   [ 15 queries used ]   [ Generated: 28.03.24, 14:42 GMT ]