I am attempting to retrieve a json response from an API. I am able to get a valid response using curl, but am unable to get PROC HTTP to work.
The curl statement requires a -d argument: -d '{"cpId": 1}'
I presume the IN= option in the PROC HTTP statement is the way to go but I receive a Bad Request error:
proc http webusername="&_user" webpassword="&_pwd"
url="&_url"
in='payload={"cpId": 1}'
method="POST"
out=_cpr
headerout=_cprh;
headers 'Content-Type' = 'application/json';
run;
I am running 9.4M4. Any suggestions?
With the -d option, I think the server might be expecting the input to be URL encoded, right?
Can you try:
%let pl = %sysfunc(urlencode(payload={"cpId": 1}));
proc http webusername="&_user" webpassword="&_pwd"
url="&_url"
in="&pl."
method="POST"
out=_cpr
headerout=_cprh;
headers 'Content-Type' = 'application/json';
run;
Other stabs in the dark:
I am still getting a 400 Bad Request error even after url encoding the IN string.
I just noticed that your curl example does not have the keyword "payload". Is that correct?
If so, can you refine the attempt to:
%let pl = %sysfunc(urlencode({"cpId": 1}));
proc http webusername="&_user" webpassword="&_pwd"
url="&_url"
in="&pl."
method="POST"
out=_cpr
headerout=_cprh;
headers 'Content-Type' = 'application/json';
run;
If you can share what API you're trying to access (if it's publicly documented), we might be able to find the right approach.
I am attempting to hit the OpenSpecimen -> Get Registrations API. The documentation is here, but not very helpful.
The working curl code, with just the user and url removed is:
curl -H "Content-Type: application/json" -X POST -d '{"cpId": 1}'
I can't get to that link -- hidden behind an Atlassian login. But have you tried once without the "payload=" and not a urlendoded version of the IN=?
Thank You! For posterity, here is the working code:
proc http webusername="&_user" webpassword="&_pwd"
url="&_url"
in='{"cpId": 1}'
method="POST"
out=_cpr
headerout=_cprh;
headers 'Content-Type' = 'application/json';
run;
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.