cancel
Showing results for 
Search instead for 
Did you mean: 

Passing Body Content in Post Snap

jsmith141
New Contributor III

Hi,

This is a very novice question, but I am having trouble with a post request snap. This is just to authenticate with the RingCentral platform to receive a token for API consumption. I am able to successfully retrieve an access token when calling the oauth/token endpoint in Postman. The issue arises when I try to move this post call into SnapLogic. The call requires certain parameters to be passed through the body and I am not sure how to duplicate this in SnapLogic post snap. Please see the screenshot of the Postman call Body tab below.

image

I have created a basic account in SnapLogic to store the username and password and my post snap references that account. I am also aware that the credentials of a basic account can be accessed using the “Account.Username” and Account.Password" of the respective referenced account within the snap.

I am just not sure how to build out the body section in the “x-www-form-urlencoded” format as shown in the screenshot? The error I get back when validating this post snap is just a 400: Bad Request.

Any insight/help that anyone could provide would be greatly appreciated. Please let me know if additional information is needed to provide assistance.

Thanks,
James

48 REPLIES 48

d_talevski
New Contributor

Hi @jsmith141 ,

When the content type is x-www-form-urlencoded then the format of the body should be the same as the query string:

parameter1=value1&parameter2=value2

In SnapLogic you can send the request body in the HTTP entity field of the REST Post snap.
Example expression:

“param1=”+encodeURIComponent($param1)+“&param2=”+encodeURIComponent($param2)

Best Regards,
Dragan Talevski

jsmith141
New Contributor III

Hi Dragan,

Thank you for your reply. I have implemented the encodeURIComponent call as you describe but I am getting the same 400 error. Please see the exact line below…

“grant_type=”+encodeURIComponent(“password”)+“&username=”+encodeURIComponent(account.username)+“&password=”+encodeURIComponent(account.password)

I have the Upload body type fields set to “Multipart form-data”. Does this need to be changed, or is there another setting on this snap that may need to be adjusted?

Thanks,
James

encodeURIComponent(“password”) is just password (there’s nothing that needs to be encoded), so you could simplify that to just "grant_type=password&username=" + ...

But I still don’t understand how you’re able to get account.username and account.password to resolve.

Upload body type isn’t used here. But you do need to add a row to the “HTTP header” table with Content-Type application/x-www-form-urlencoded, as I showed in the screenshot from my last reply.

Ah! I just looked at that other Community post you linked. I wasn’t aware of that hack. But I’m pretty sure it only works in an expression used in the Value column of the HTTP Headers table, not anywhere else. I don’t think you’ll be able to use it for the request body.