使用UTL_HTTP从PL / SQL调用Web服务过程 - 错误403拒绝禁止访问

时间:2017-03-08 09:11:44

标签: oracle web-services plsql

我需要你的帮助。我试图通过PL / SQL程序调用web服务已近2个月了。

我可以使用Chrome Extension ARC调用网络服务。

但是当我使用UTL_HTTP Oracle API时,它无效。

这是我的代码(有些行丢失,但我设法向您显示主要行)

DECLARE
http_method VARCHAR2(10)          := 'POST';
CONTENT_TYPE_HEADER VARCHAR2(30)  := 'Content-Type';
CONTENT_TYPE_LENGTH VARCHAR2(30)  := 'Content-length';
CONTENT_TYPE_VALUE VARCHAR2(30)   := 'text/plain';
v_param_length NUMBER :=12;
    BEGIN
    UTL_HTTP.SET_TRANSFER_TIMEOUT(request_timeout);
    req := UTL_HTTP.BEGIN_REQUEST (url => UTL_URL.ESCAPE(v_url_1), method => http_method);
  utl_http.set_authentication(req, 'myuser',  '1234',  'Basic', FALSE);
    UTL_HTTP.SET_HEADER (r => req, name => CONTENT_TYPE_HEADER, value =>     CONTENT_TYPE_VALUE);
    UTL_HTTP.SET_HEADER (r => req, name => CONTENT_TYPE_LENGTH, value => v_param_length);
    resp := UTL_HTTP.GET_RESPONSE(r => req);
    UTL_HTTP.END_RESPONSE(resp);
    EXCEPTION
    WHEN UTL_HTTP.END_OF_BODY THEN
      BEGIN
        UTL_HTTP.END_RESPONSE(resp);            
      END;
    WHEN UTL_HTTP.TOO_MANY_REQUESTS THEN
      UTL_HTTP.END_RESPONSE(resp);
END;

这是错误:

<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>403 - Forbidden: Access is denied.</h2>
  <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
 </fieldset></div>

管理员告诉我这个错误不是由代理引起的:

禁用代理

  

[myuser @ myserver~] $ export https_proxy =

     

[myuser @ myserver~] $ export http_proxy =

测试连接

  

[myuser @ myserver~] $ wget http://my-server-ws:1234   --2017-02-28 13:14:17-- http://my-server-ws:1234/解析my-server-ws(my-server-ws)... 10.10.5.70连接到my-server-ws   (my-server-ws)| 10.10.5.70 |:1234 ...已连接。 HTTP请求已发送,   等待回复... 403 Forbidden 2017-02-28 13:14:17错误403:   禁止的。

1 个答案:

答案 0 :(得分:1)

403响应通常表示以下两种情况之一:

提供了身份验证,但不允许经过身份验证的用户执行请求的操作。

- &gt;检查您的用户是否具有所有必要的权限

禁止所有用户操作。例如,当目录列表被禁用时,对目录列表的请求返回代码403。

- &gt;检查网络服务器的设置。