2012-04-03 131 views
3

我发现如果我打电话UTL_HTTP.GET_RESPONSE并得到一个错误响应(在这种情况下500),当我打电话UTL_HTTP.READ_TEXT它失败ORA-29261: bad argument。出现错误时如何查看响应主体?如何在Oracle UTL_HTTP中将响应正文保留在非200响应中?

+0

事实证明,我只需要调用'UTL_HTTP.set_response_error_check(false);' – Dan 2012-04-03 18:37:38

+0

是的,我看到我的包中早些时候有同样的调用;-) – DCookie 2012-04-03 19:55:03

回答

2

该解决方案最终被调用

UTL_HTTP.set_response_error_check(false); 

提出请求之前。

2

我已经在过去做什么就是通过标题来读取,然后做一个read_line得到个体反应线:

v_resp := utl_http.get_response (v_req); 

v_status := v_resp.status_code; 

FOR i IN 1..UTL_HTTP.GET_HEADER_COUNT(v_resp) LOOP 
    utl_http.get_header(v_resp, i, v_name, v_value); 
    dbms_output.put_line(v_name || ': ' || v_value); 
END LOOP; 

BEGIN 
    utl_http.read_line(v_resp, v_value, TRUE); 
    v_response := v_value; 
    dbms_output.put_line(v_value); 
EXCEPTION 
    WHEN OTHERS THEN 
    NULL; -- handle exception here 
END;