Как исправить неправильный запрос в ScriptRunner - jira - PullRequest
1 голос
/ 26 июня 2019

Я давно просматривал темы, но не могу найти ответ для своей проблемы.

Я пытаюсь сделать интеграцию между двумя jira.

Когда я пробую этот JSONна почтальоне или SoapUI все нормально, но в testRunner у меня ОШИБКА

Это мой код:

import groovy.json.JsonSlurper;
import groovy.json.StreamingJsonBuilder;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue
import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger
import org.apache.log4j.Level
import org.apache.commons.io.IOUtils

def log = Logger.getLogger("com.acme.CreateSubtask")
log.setLevel(Level.DEBUG)

log.debug "dey3"

def baseURL = "https://MYJIRA/rest/api/2/issue/";




def body_req = """

{ "fields":
{
"project": {"key": "JIRA"}, 
"issuetype": {"name": "Task"},
"summary": "My Issue.",
"description": "Test"
}
}

"""


def basicAuth = "ZzzzzzzzzzzZZZZZZz"
URL url = new URL(baseURL);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setRequestProperty ("Authorization","Basic "+ "ZzzzzzzzzzzZZZZZZz");
connection.requestMethod = "POST";
connection.setDoInput(true); 
connection.setDoOutput(true); 
connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8")
connection.outputStream.withWriter("UTF-8") { new StreamingJsonBuilder(it, body_req) }

connection.connect();

log.debug HttpURLConnection
log.debug body_req
log.debug (connection.getResponseMessage())
log.debug "Content:"
log.debug connection.getContent()
log.debug (connection.getResponseMessage())
log.debug (connection.getRequestProperties())

log.debug "dey4"

В журналах:

at Script807.run(Script807.groovy:50)
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://MYJIRA/rest/api/2/issue/
at Script807.run(Script807.groovy:52)
java.io.IOException: Server returned HTTP response code: 400 for URL: https://MYJIRA/rest/api/2/issue/
2019-06-26 09:45:58,729 http-bio-443-exec-18 ERROR jira 585x33522x1 78fcwl 10.250.112.135 /secure/WorkflowUIDispatcher.jspa [scriptrunner.jira.workflow.ScriptWorkflowFunction] Script function failed on issue: HD-113062, actionId: 601, file: <inline script>
2019-06-26 09:45:58,729 http-bio-443-exec-18 ERROR jira  585x33522x1 78fcwl 10.250.112.135 /secure/WorkflowUIDispatcher.jspa [scriptrunner.jira.workflow.ScriptWorkflowFunction] *************************************************************************************
2019-06-26 09:45:58,727 http-bio-443-exec-18 DEBUG jira  585x33522x1 78fcwl 10.250.112.135 /secure/WorkflowUIDispatcher.jspa [com.acme.CreateSubtask] Content:
2019-06-26 09:45:58,727 http-bio-443-exec-18 DEBUG jira  585x33522x1 78fcwl 10.250.112.135 /secure/WorkflowUIDispatcher.jspa [com.acme.CreateSubtask] Bad Request
2019-06-26 09:45:58,726 http-bio-443-exec-9 DEBUG jira 585x33523x2 1g0o53j 10.250.8.21 /rest/api/2/issue/ [anguswarren.jira.RemoteUserJiraAuth] Session found; user already logged in
2019-06-26 09:45:58,725 http-bio-443-exec-9 DEBUG jira 585x33523x2 1g0o53j 10.250.8.21 /rest/api/2/issue/ [anguswarren.jira.RemoteUserJiraAuth] Session found; user already logged in
2019-06-26 09:45:58,725 http-bio-443-exec-9 DEBUG jira 585x33523x2 1g0o53j 10.250.8.21 /rest/api/2/issue/ [anguswarren.jira.RemoteUserJiraAuth] Session found; user already logged in
2019-06-26 09:45:58,725 http-bio-443-exec-9 DEBUG jira 585x33523x2 - 10.250.8.21 /rest/api/2/issue/ [anguswarren.jira.RemoteUserJiraAuth] Session found; user already logged in

}
}
"description": "Test"
"summary": "My Issue.",
"issuetype": {"name": "Task"},
"project": {"key": "JIRA"}, 
{
{ "fields":

body_req имеет правильный формат?Я понятия не имею, что не так с этим.Я нигде не мог найти anserws: (

С уважением

1 Ответ

0 голосов
/ 22 июля 2019

Возможно, было бы лучше определить полезную нагрузку программно, а затем преобразовать ее в json. Просто для избежания исключений, забытых наручей или чего-то еще. Попробуйте определить свою полезную нагрузку следующим образом:

import groovy.json.JsonOutput

def createIssueRequest = new Expando()
createIssueRequest.fields = new Expando(summary: "My Issue.", description: "Test")
createIssueRequest.fields.project = new Expando(key: "JIRA")
createIssueRequest.fields.issuetype = new Expando(name: "Task")
def createIssueJson = JsonOutput.toJson(createIssueRequest)
...
...
...
connection.outputStream.withWriter("UTF-8") { new StreamingJsonBuilder(it, createIssueJson) }
...