Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

More details on HttpClientRequest

Avatar

Level 4

Hi,

I am trying to make a remote call with HttpClientRequest to reach a Web Service. I can see that the http request is made (both POST or GET seems to work ok ), but I am finding some troubles to:

- Get the content of the response itself that is returned from the server. I can not even find the response headers.

- Also, I don't know how to deal with http Basic authentication. Should I set some particular headers?

Do you know of any reference or some help that I can use to !work out both topics below?

Thanks very much in advance

Guillermo

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Try the following

var http = new HttpClientRequest("yourhost.com")

http.execute()

var response = http.response

for(var i in response.header)

  logInfo("header[" + i + "] => " + response.header[i])

Should give you something like

View solution in original post

1 Reply

Avatar

Employee Advisor

Play around with this in a workflow, you'll get the idea.

Avatar

Level 4

Thanks David,

Actually this is what I was doing to make the request I meant before, but in the response I can not find anything related to the reply from the server.

Avatar

Correct answer by
Employee Advisor

Try the following

var http = new HttpClientRequest("yourhost.com")

http.execute()

var response = http.response

for(var i in response.header)

  logInfo("header[" + i + "] => " + response.header[i])

Should give you something like

Avatar

Level 4

Thanks David. I was trying to see the contents of the object returned with

JSON.stringify(response)

and did not get any output. Now with your help I am receiving what I was expecting.

Is anyone able to help with the http Basic authentication headers?

Avatar

Community Advisor

You should use the following:

var API = 'http://yourwebserviceendpoint.com'

var http = new  HttpClientRequest(API);

http.method = "GET";

http.header["Content-Type"] = "application/json";

http.header["Accept"] = "application/json";

http.header["Authorization"] = "Basic Z3XNlbmRleHRlc3QxQGdtYWlsLmNvbTpsb2dpbjEyMzQ="; // replace with your authorization code

http.execute();

var response = http.response;

Regards,

Amit

Avatar

Level 3

Hi Amit,

 

I am trying to get the access token using the POST method using in the javascript activity with the reference of the above code. I am passing the Client_id, Client_secret, Grant_Type, and Scope in the header only like above. However getting an error like "invalid_client", "unsupported_grant_acess".

 

Can you please help me with the code for POST method to get the access token with client_id, client_secret, Grant_Type, and Scope to be passed in the body? 

 

Thanks,

Raviteja Gundu.

Avatar

Level 3

Hi Team,

 

The issue is resolved now. We need to send the grant type, client_id, client_secret in body as a query string. We were able to get the access token now.

http.body="grant_type=<value>&client_id=<value>&client_secret=<value>&scope=<value>";

 

Hope it will help someone.

 

Thanks,

Raviteja Gundu.

Avatar

Community Advisor

Hello fellow campaigners,

can we send http request without authorizing the domains in the config?

I need to ping urls from JS activity

Avatar

Level 4

Hi Marcel,

I don't think you need to add any authorization as far as I remember but I'm not 100% sure to be honest.

Regards

Guillermo

Avatar

Employee Advisor

Marcel, you must white list outbound url that you will be making the request to.

OCT -31- 2017 Campaign v6/v7 - 17.4 Build 8863

Technical evolutions

URL permissions

We have limited the default list of URLs that can be called by JavaScript codes (workflows, etc.). To allow a new URL, the administrator needs to reference it in the serverConf.xml file.

<urlPermission action="blocking" debugTrace="true"> <url dnsSuffix="abc.company1.com" urlRegEx="https://.*" /> <url dnsSuffix="def.partnerA_company1.com" urlRegEx="https://.*" /> <url dnsSuffix="xyz.partnerB_company1.com" urlRegEx="https://.*" /> </urlPermission> 

Refer to the Security configuration checklist for more information.