我正在尝试通过Oracle APEX中的REST API在Jira中创建一个问题,但我总是只得到错误400作为响应。顺便说一句,当我用GET方法读取问题时,一切都很好,POST和PUT都会导致错误。
我使用了一段简单的代码:
DECLARE
req utl_http.req;
res utl_http.resp;
url varchar2(4000) := 'http://host:port/rest/api/latest/issue/';
buffer varchar2(4000);
content varchar2(4000) :=
'{
"fields": {
"project":
{
"id": "10000"
},
"summary": "Auto generated",
"description": "Creating of an issue using the REST API",
"issuetype": {
"id": "3"
}
}
}';
begin
-- Make request
req := utl_http.begin_request(url, 'POST');
utl_http.set_header(req, 'Authorization', 'Basic bG9naW46cGFzc3dvcmQ=');
utl_http.set_header(req, 'Content-Type', 'application/json');
utl_http.write_text(req, content);
-- Get response
res := utl_http.get_response(req);
utl_http.read_text(res, buffer);
来自服务器的响应仅包含res.status_code = 400和res.reason_phrase = null。我研究了很多材料,但没有一个可以解决我的问题。
答案 0 :(得分:0)
400表示错误请求,JIRA通常会输出有关其失败原因的信息性错误消息。捕获响应的实际主体,而不仅仅是状态代码和/或原因,并查看它的内容。
答案 1 :(得分:0)
好吧,我终于明白了,问题是什么。尽管使用了HTP / 1.1协议版本(默认情况下),但仍然必须指定Content-Length标头(以字节为单位)。