Hi, I have a working ds2 prototype that does http posts to a service. Here's the working code: /* HTTP POST in DS2, requests sent iteratively */
proc ds2;
data _null_;
method init();
end;
method call_service(varchar(256) consUrlBase, varchar(256) uuid, varchar(256) brand, varchar(100) definition, varchar(2048) auth_token);
filename response temp;
filename request temp;
dcl varchar(2050) authHeader;
dcl varchar(1024) consUrl;
dcl varchar(255) consPart jsonBody;
dcl package http h();
dcl varchar(1024) body;
dcl int status;
dcl varchar(1024) contentType;
/* set a couple variables*/
/* use http package to call service */
h.createPostMethod(consUrl);
h.setOAuthToken(authHeader);
/* set a couple headers */
h.setRequestContentType('application/json; charset=utf-8');
h.setRequestBodyAsString(jsonBody);
h.executeMethod();
status = h.getStatusCode();
if status ^= 201 then do;
put 'ERROR: ' status ' response calling ' consUrl;
end;
h.delete();
end;
method run(); /* run step executes for each row in dataset */
set work_dir.&dsname._&currdate.;
call_service(cons_url_base, UUID, brnd_name, definition, auth_token);
end;
method term();
put 'Done with ds2 logic!';
end;
enddata;
run; So the code executes and I get the 201 response I'm expecting. Except I'm also getting the following warning... WARNING: Warning reported by DS2 package d2http:
WARNING: Aborted execution of HTTP POST method with URL: After 500 messages (or so it seems), I get: ERROR: Maximum number of error messages that can be recorded has been exceeded. I'll routinely process thousands of records, so looking for a way to suppress the warning as it is causing the program to fail. I'm also slightly suspicious of the dcl package http h(); ... maybe that should just be declared globally? I'm not seeing any performance improvement by moving it. (real time was slower, cpu time was less) I'm just following the sample code found here and other posts, so open to any guidance.
... View more