如何在Oracle UTL_HTTP中保留非200响应的响应体?

时间:2012-04-03 17:44:23

标签: oracle http

我发现如果我拨打UTL_HTTP.GET_RESPONSE并收到错误回复(在这种情况下为500),当我致电UTL_HTTP.READ_TEXT时,它会失败并显示ORA-29261: bad argument。出现错误时如何查看响应正文?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

解决方案最终要打电话

UTL_HTTP.set_response_error_check(false);

在提出请求之前。