Ich bin neu in PL/SOL und ich versuche, einen Webservice von Oracle, das Parameter akzeptiert und sendet Nachrichten ... Eigentlich funktioniert es gut, wenn ich Werte in Englisch, aber für Arabisch sendet es eine Nachricht mit Fragezeichen ???? . Ich versuchte, meine Art des Inhalts zu ändern, aber nichts funktioniert, außer:Aufruf von Webservice von Oracle-Problem mit arabischen Parametern
UTL_HTTP.set_header (l_http_request, 'Content-Type', 'application/x-www-form-urlencoded; charset = windows-1256');
mit dem gleichen Problem in Arabisch.Können Sie mir einen Tipp geben? Unten ist mein Code.
Hinweis: Wenn ich Parameter von. Net-Client durch den Aufruf des gleichen Webservice übergeben, werden Nachrichten korrekt in Arabisch gesendet. Danke
PROCEDURE HIMS_SEND_SMS (username Varchar2 ,
password varchar2,
phone varchar2,
code varchar2,
message varchar2,
P_RESPONSE OUT VARCHAR2) AS
l_param_list VARCHAR2(512);
l_http_request UTL_HTTP.req;
l_http_response UTL_HTTP.resp;
l_response_text VARCHAR2(32767);
soap_request VARCHAR2(1024);
i integer;
BEGIN
dbms_output.enable(100000);
utl_http.set_transfer_timeout(300);
l_param_list := 'username='|| username ||chr(38)|| 'password='|| password ||chr(38)|| 'phone='|| phone ||chr(38)|| 'code='|| code ||chr(38)|| 'message='|| message;
l_http_request := UTL_HTTP.begin_request ('http://serviceexample.com/service.asmx/SendSMSHTTP'
, 'POST'
, 'HTTP/1.1');
UTL_HTTP.set_header(l_http_request, 'Content-Type', 'application/x-www-form-urlencoded; charset=windows-1256');
--UTL_HTTP.set_header(l_http_request, 'Content-Type', 'text/plain; charset=windows-1256');
--UTL_HTTP.set_header(l_http_request, 'Content-Type', 'application/soap+xml; charset=ISO-8859-6');
--UTL_HTTP.set_header(l_http_request, 'Content-Type', 'text/xml');
--UTL_HTTP.set_header(l_http_request, 'Content-Type', 'text/xml; charset=UTF-8');
--UTL_HTTP.set_header(l_http_request, 'Content-Type', 'text/xml; charset=ASCII');
UTL_HTTP.set_header(l_http_request, 'Content-Length', LENGTH(l_param_list));
UTL_HTTP.write_text(l_http_request, l_param_list);
l_http_response := UTL_HTTP.get_response(l_http_request);
UTL_HTTP.read_text(l_http_response, l_response_text);
-- l_response_text:= substr(l_response_text,92,1);
P_RESPONSE := l_response_text;
UTL_HTTP.end_response(l_http_response);
EXCEPTION
WHEN UTL_HTTP.end_of_body
THEN UTL_HTTP.end_response(l_http_response);
END HIMS_SEND_SMS;
Nun ich diese Lösung versucht, aber ich habe immer noch das gleiche Problem. Es scheint, dass Orakel selbst keine arabischen Parameter akzeptiert. Mit anderen Worten, wenn ich versuche, arabische Wörter zu schreiben, konvertiert Orakel sie in ???? bevor ich mein webserice anrufe. Irgendeine Idee, wie man dieses Problem löst? –
@ H.Al Es ist sicherlich nicht Oracle. Es könnten Ihre Datenbankeinstellungen sein. Haben Sie versucht, die folgende Abfrage auszuführen: 'Wählen Sie den Wert aus nls_database_parameters mit Parameter = 'NLS_CHARACTERSET';'. Was bekommst du? – Hawk
Ich habe diese AR8MSWIN1256 –