1. Thierry Garrigues
  2. PowerBuilder
  3. Thursday, 22 September 2022 12:56 PM UTC

Hi

Could you help me to translate this PHP code to PowerBuilder.

It is used to call a REST-type web service.

Thanks for your help.

Thierry

DEFINE('CFG_APP_ID', '???????????');
DEFINE('CFG_TOKEN', '?????????????????');
function CallWebService($strCallURL, $strMethod, $strBody, &$bResult){
	$strURL = $strCallURL;
	$strParams = 'Data=' . urlencode($strBody);
	$strParams .= '&AppId=' . urlencode(CFG_APP_ID);
	$strParams .= '&Token=' . urlencode(CFG_TOKEN);
	$strParams .= '&Method=' . urlencode($strMethod);
	$objCurl = curl_init();
	
	curl_setopt($objCurl, CURLOPT_URL, $strURL);
	curl_setopt($objCurl, CURLOPT_POST, 1);
	curl_setopt($objCurl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($objCurl, CURLOPT_POSTFIELDS, $strParams);
	curl_setopt($objCurl, CURLOPT_HTTPHEADER,
				array("Content-Type: application/x-www-form-urlencoded", "Content-length: " . strlen($strParams)));

$strResponse = curl_exec($objCurl);

if ( !curl_errno($objCurl) ) {
$bResult = true;
} else {
$bResult = false;
$strResponse = 'An error occured: ' . curl_error($objCurl);
}
return $strResponse;
}
//call function
$strResponse =
CallWebService('https://webservices.oxatis.com/WebServices/httpservices/productservices.aspx' ,
'ProductGet',
'<?xml version="1.0" encoding="utf-8"?> <Product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><OxID>9999999</OxID></Product>', $bResult);
if ( $bResult ) {
header("Content-type: text/xml");
}
echo $strResponse;
?>
Thierry Garrigues Accepted Answer Pending Moderation
  1. Thursday, 22 September 2022 13:22 PM UTC
  2. PowerBuilder
  3. # 1

I want to use httpclient.sendrequest('POST', url,  body, EncodingUTF8!)

but I don't know what the PHP code does:

curl_setopt($objCurl, CURLOPT_POSTFIELDS, $strParams);

Thanks 

Comment
  1. Arnd Schmidt
  2. Thursday, 22 September 2022 21:22 PM UTC
The Statement sets the data to be posted.

Key=Value pairs are simply concatenated with '&' as separator.

But be sure not to misuse the "=" and "&" signs inside your data - to mask that stuff the urlencode() Method is your friend in php.

PowerBuilder offers: coder.UrlEncode ( variable ) .



https://community.appeon.com/index.php/webinars/elevate-discussion/posting-forms-with-httpclient?limitstart=0#reply-27067



hth

Arnd
  1. Helpful
There are no comments made yet.
Thierry Garrigues Accepted Answer Pending Moderation
  1. Friday, 23 September 2022 06:24 AM UTC
  2. PowerBuilder
  3. # 2

Hi 

It works now. I put the corresponding code.

Thanks for your help.

Regards 

Thierry 

string ls_data
ls_data += '<?xml version="1.0" encoding="utf-8"?>'
ls_data += '<Product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">'
ls_data += ' <OxID>5282552</OxID>'
ls_data += ' <ItemSKU>85852</ItemSKU>'
ls_data += '</Product>'

ls_data = inv_coderobject.of_url_encode(ls_data, EncodingUTF8!)

string ls_appId = "xxx"
ls_appId = inv_coderobject.of_url_encode(ls_appId, EncodingUTF8!)

string ls_token = "yyy"
ls_token = inv_coderobject.of_url_encode(ls_token, EncodingUTF8!)

string ls_methode = "ProductGet"
ls_methode = inv_coderobject.of_url_encode(ls_methode, EncodingUTF8!)

string ls_body
ls_body = 'Data=' + ls_data + "&AppId=" + ls_appId + "&Token="+ ls_token + "&Method=" + ls_methode

ll_ret = inv_httpclient.setrequestheader("charset", "UTF-8", true)
ll_ret = inv_httpclient.setrequestheader("content-type" , "application/x-www-form-urlencoded", true)
ll_ret = inv_httpclient.setrequestheader("Content-length" , string(len(ls_body)), true)

ll_ret =inv_httpclient.sendrequest('POST',"https://webservices.oxatis.com/webservices/httpservices/productservices.aspx", ls_body, EncodingUTF8!)
Comment
  1. Arnd Schmidt
  2. Friday, 23 September 2022 08:14 AM UTC
Great! Thanks for providing your small piece of the working code!
  1. Helpful
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.