No parameters coming through when testing WebDev doPost?

I have set up the following web dev resource for doPost:

def doPost(request,session):
	logger = system.util.getLogger("ERP_Integration")
	scriptName = 'Web Dev/volCompliance/doPost'
	authProfile = "ERP_Users"
	currDate = shared.util.getGatewayDateTime()
	currDateStr =,"yyyy-MM-dd HH:mm:ss") + ' - inbound httpPOST request detected')
	logger.debug(scriptName + ' - session data: %s' % (str(session)))
	logger.debug(scriptName + ' - parameters: %s' % (str(request['params'])))
	logger.debug(scriptName + ' - headers: %s' % (str(request['headers'])))
	####logger.debug(scriptName + ' - data: %s' % (str(request['data'])))
	#------------------ Get request parameters -----------------#
	# if application/json data is used inbound, access like this:
	# param = request['params'].get("paramName")
	groupID = request['params'].get("pfmGroupID")
	gradeID = request['params'].get("pfmGradeID")
# end def

I am building a test function as follows:

def test_incomingPOST():
	scriptName = "shared.api.test_incomingPO" + " - script started")	

	url = "http://myhostname:8088/main/system/webdev/ERP_Test/volCompliance"
	params = {"pfmStartDate":'2022-08-20 00:30:00',"pfmEndDate":'2022-08-27 10:30:00',"pfmGroupID":"GROUP1","pfmGradeID":"-ABC","pfmThickID":"50","pfmWidthID":"200","pfmLengthID":"4050","pfmVolume":"0.457","pfmLocationID":"WDM"}
	jsonMsg = system.util.jsonEncode(params)
	response =,params=params)
	###response =,contentType="application/json",params=jsonMsg, throwOnError=True) + " - response status: %s" % response.statusCode)
	return system.util.jsonDecode(response.json)
	###return system.util.jsonDecode(response)
# end def

When calling this test function, the output of my logger is showing there are no parameters.
I’m going a bit nuts here, can someone point out where i’m going wrong sending parameters to the endpoint?
I’ve tried both the and in-built functions, both providing same issue.

You should be looking at the data or postData, not params. params are URL parameters, not a request body.

Edit: errr n/m, you’re posting with params too… Hmm

What’s under here?

That is just an error telling me there is nothing when i try to access parameters via:

groupID = request['params'].get("pfmGroupID")

and then try and use groupID somewhere. It complains about it being None.

Ok so tried to dumb it down a bit, and got some partial success. but something still seems fishy…

Simplified the function call to this:

response =, {"pfmGroupID":"13456"})
print system.util.jsonDecode(response)

When there were other issues inside the WebDev endpoint, i got the following exception, which finally implied i was sending the parameter in the URL:

IOError: Server returned HTTP response code: 501 for URL:

What has thrown me for a loop is the logger showing the value and type of the parameter passed through:

ERP_Integration	16Aug2022 10:17:24	Web Dev/volCompliance/doPost - inbound httpPOST request detected
ERP_Integration	16Aug2022 10:17:24	Web Dev/volCompliance/doPost - data: array('b')
ERP_Integration	16Aug2022 10:17:24	Web Dev/volCompliance/doPost - headers: {'Cookie': u'JSESSIONID=node02o79ir60n77cqp8spcouz1ct64.node0', 'Accept': u'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2', 'User-Agent': u'Java/11.0.15', 'Connection': u'keep-alive', 'Host': u'', 'Content-Length': u'16', 'Content-Type': u'application/x-www-form-urlencoded'}
ERP_Integration	16Aug2022 10:17:24	Web Dev/volCompliance/doPost - parameters: {'pfmGroupID': (u'13456', u'13456')}
ERP_Integration	16Aug2022 10:17:24	Web Dev/volCompliance/doPost - session data: {u'user': {badge=null, schedule=Always, firstname=SAP01, notes=Test user for SAP inbound connections, language=en,, username=SAP01, lastname=null}}
ERP_Integration	16Aug2022 10:17:24	

Why would the pfmGroupID parameter be a tuple now…?

Does the same thing happen if you use instead?

I did observe a small error in our docs page for regarding redirect_policy. It defaults to “NEVER” (not “NORMAL”) when unspecified. That is now corrected.

I think you’re probably going to run into problems trying to send all of that through as URL parameters. It seems more apropos to do a POST with a request body. That said, I was able to mock this up successfully:

If your params entries have spaces in them (or other special characters), you’ll probably encounter errors such as:

java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: Illegal character in query at index 106: http://...
1 Like

Let me check…

And another discovery… probably obvious to someone who deals with HTTP requests a lot, but the reason my parameters weren’t getting sent to the endpoint correctly was due to invalid formatting of the date variables. It seems obvious in hindsight, but you cannot send a parameter string that looks like this:

IOError: Server returned HTTP response code: 400 for URL: 00:30:00&pfmVolume=0.457&pfmLocationID=WDM&pfmGradeID=-ABC&pfmEndDate=2022-08-27 10:30:00&pfmGroupID=GROUP1&pfmThickID=50

Happy days if you format the date strings in a more URL friendly way such as:


Or i’m sure there are industry standards such as:

date=2012-12-31T22:00:00.000Z .


And I ask about instead because seems to always send the provided parameters as body, not URL parameters.

Yes that was the problem… funny characters in the URL.

I would like to do a POST with request body but i seem to have forgotten how to do that. I think i did it in Javascript in some other project, but struggling a bit atm to recall it.

Just supply a data parameter instead of params when using

1 Like

Also, if you do want to use URL params, will encode them for you, as long as the params object you provide is a dictionary and not pre-encoded JSON like you were doing. If you encode it yourself you are responsible for URL escaping the contents.

1 Like

Ok, and presumably if using, using the postData and sending as a json encoded string does the equivalent?

Struggling to get working at the moment but i think i have enough to go by at the moment.

EDIT: Managed to get the data coming in properly using httpPost, and postData. Values no longer coming through as tuples like they did when sent as URL parameters…
I vaguely remember this being an issue on my other project too actually…

Thanks for the help guys.