Hello :)
Im wondering is there a way to send post http request via the scriptrunner postfunction feature?
The current script i have is JAVA:
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\r\n\"username\":\"USERNAME\",\r\n\"password\":\"PASSWORD\"\r\n}"); Request request = new Request.Builder() .url("http://IP ADDRESS/authentication") .post(body) .addHeader("content-type", "application/json") .addHeader("cache-control", "no-cache") .addHeader("postman-token", "dabd56ae-0efb-db67-72fe-657b5682a466") .build(); Response response = client.newCall(request).execute();
Anyone care to help to convert into groovyscript.
Many thanks!
Pon
Hi Pon:
Doing a search on this I found a community question that might be helpful to you.
Here you will find a descriptive example on how to do this with Jira and Scriptrunner. If this isn't working for you, give me a thorough example on what you want to do and I will try to provide a custom script for you.
Cheers!
Dyelamos
Hey Daniel,
Thanks for the reply!
Im quite new to this, basically what im trying to do is call rest api to return a sucessful response which:
i attempted the above, i dont see where i can place the auth/payload when sending the request, i tried searching also around and gotten around this far:
package com.hybris.activity import groovyx.net.http.ContentType import groovyx.net.http.RESTClient def activitiRestClient = new RESTClient("http://10.150.14.164:8090/authentication") activitiRestClient.auth.basic "USERNAME", "PASSWORD" def response = activitiRestClient.get( path: "/devices" ) println response.data.toString(2)
I have a python 3 code which is as follows (and works in python):
import http.client conn = http.client.HTTPConnection("10.150.14.164:8090") payload = "{\r\n\"username\":\"USERNAME\",\r\n\"password\":\"PASSWORD\"\r\n}" headers = { 'content-type': "application/json", 'cache-control': "no-cache", 'postman-token': "aace72a6-d5d2-1f44-23bf-4a10b6306b4c" } conn.request("POST", "/authentication", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
which im trying to convert over to groovy script.
Any guidance would be very helpful :)
Thanks,
Pon
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Pon:
In this link you will find official documentation as to how to use httpBuilder to send a post request. That is the utility that we use to build post request in Adaptavist.
Cheers
DYelamos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Daniel :) got it working.
It was so simple all along:
import groovyx.net.http.HTTPBuilder import static groovyx.net.http.ContentType.* import groovyx.net.http.ContentType import static groovyx.net.http.Method.* import groovy.json.JsonSlurper import net.sf.json.groovy.JsonSlurper def http = new HTTPBuilder('http://IP/authentication') http.request(POST) { requestContentType = ContentType.JSON body = [username: 'USERNAME', password: 'PASSWORD'] response.success = { resp, JSON -> return JSON } response.failure = { resp -> return "Request failed with status ${resp.status}" } }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Glad you did mate! Thanks for the upvote and good luck in future programming!
Cheers
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Strange! This code gives me errors on multiple lines starting with 'requestContentType' and 'response' are not defined.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Did you find out a way ? I am even facing errors with response as not defined
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
def url = 'https://www.aurl.net/somewhere/'
def post = new HttpPost(url)
post.addHeader("content-type", "application/json; charset=UTF-8")
post.setEntity(new StringEntity(jsonRequest, 'UTF-8'))
// execute
def client = HttpClientBuilder.create().build()
def response = client.execute(post)
def bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()))
def jsonResponse = bufferedReader.getText()
I used this. I think that groovy code is syntactically incorrect. You must use def for inferred types.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Daniel Yelamos [Adaptavist] I have the below code, which I want to run in groovy via scriptrunner
curl -x "proxyServer:port" -k "http url where I want to post the data" -d '{
"title" : "API Change",
"description": "Add loads of DNS records",
}'
Could you please help me so that I can write the same code in groovy.
Regards,
Sugandha
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I'm pretty new to this and have only done one, but it's working so thought i'd share. I'm calling a Scriptrunner script from a Post Function to post to Monday.com. Hope this helps:
import groovy.json.JsonSlurper
<..cut out some variable defining...>
def msg1 = [
query : 'mutation{create_item (board_id: BOARDID,group_id:"GROUPNAME",item_name: "MYITEM"}") {id}}'
]
HttpResponse<String> jsonResp = post('https://api.monday.com/v2')
.header('Content-Type', 'application/json')
.header('Authorization', "${apiToken}")
.body(msg1)
.asString()
//now parse the results.
def result = slurper.parseText(jsonResp.body)
Integer iid = result["data"]["create_item"]["id"] as Integer
//then I do another call using the "iid", pretty much same process as above but i don't need to parse the result.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@sburnett - possible to share the API token code? Our jira doesn't support Basic authentication anymore and I'm looking for a code that can pull token and use it for jira REST Endpoint authentication.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
HI @Daniel Yelamos [Adaptavist] I have a Similar requirement can you please help me With REST Call
I Need to Make a REST call Depends Upon the Value Selected in the Custom Field
I have posted my requirement here Please go through this once please
Can you please me
Thanks,
Kumar
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Can you help me with the GET method to call a rest api and print the response
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.