Paweł Nowicki Oracle Developer
Temat: UTL_HTTP i wartości POST
Witam,Mam problem, prawdopodbnie błahy, ale szukanie rozwiązania w necie już mnie zniechęciło.
Opis:
Utworzyłem 'stronę' kod 1, która wyświetla parametry przekazane przez http metodą POST.
Kontrolnie kod sprawdzam formularzem kod 2.
Problem polega na tym, że potrzebuję działanie odwzorować w PL/SQL. Wykorzystuję kod 3, który działa na pakiecie UTL_HTTP. Łączę się ze stroną i pobieram jej zawartość. Wynik nie zawiera parametrów POST, które prawdopodbnie źle przekazuję. Przekazuję je poprzez utl_http.write_text(req, content), gdzie content - to pary parametr=wartość.
Proszę o pomoc. Jak przesłać, poprawić kod, aby przekazywał wartości do tablicy POST.
Kod 1 (php):
<?php
echo "połaczenie nawiązane\n<br/>drukowanie tablicy POST:\n<br/><br/>";
foreach ($_POST as $key => $entry)
{
if(is_array($entry)){
print $key . ": " . implode(',',$entry) . "<br>";
}
else {
print $key . ": " . $entry . "<br>";
}
}
?>
Kod 2 (html):
<form name="input" action="http://adres_strony" method="post">
Parametr: <input type="text" name="parametr" />
<input type="submit" value="Submit" />
</form>
Kod 3 (pl/sql utl_http):
declare
req utl_http.req;
res utl_http.resp;
url varchar2(4000) :=
'http://adres_strony';
name varchar2(4000);
buffer varchar2(4000);
content varchar2(1000) := 'parametr=wartosc';--||'&'||'parametr2=wartosc2';
begin
req := utl_http.begin_request(url, 'POST',' HTTP/1.1');
utl_http.set_header(req, 'user-agent', 'mozilla/4.0');
utl_http.set_header(req, 'content-type', 'text/html');
utl_http.set_header(req, 'Content-Length', length(content));
utl_http.write_text(req, content);
dbms_output.put_line('Przekazano dane: '||content);
res := utl_http.get_response(req);
begin
loop
utl_http.read_line(res, buffer);
dbms_output.put_line(buffer);
end loop;
utl_http.end_response(res);
exception
when utl_http.end_of_body then
utl_http.end_response(res);
end;
end;
/