[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FW: Web services
Hi Carlos,
Please understand that HTTPAPI is a file transfer program. It's job is
to send either a string containing data, or a file containing data from
your computer to another computer. According to your logs, it's doing
that, successfully.
Your question is about what to put in the string that's sent to someone
else's web service. (Someone called "Paytrace", I gather.) If this
was a web service that I was familiar with, I'd be more than happy to
share my knowledge. But, unfortunately, I'm not familiar with
Paytrace.
Normally, a web service will provide documentation on how to use it.
This might be in the form of a WSDL document (which is the norm with
SOAP web services) or it might be in the form of a human-readable
documentation, such as HTML, PDF or Word format. Did they give you
anything like this? Because this is where you should start -- learn
how to call the service.
Once you know what the service is expecting, and your question is how
to accomplish that with HTTPAPI, let me know, and I'll be glad to help.
You mention URL encoding -- and I don't exactly know how you want URL
encoding to come into play here? Is it that you have the equivalent of
an HTML form, and it has one variable named 'parmlist', and in that
variable you wish to put all of the pipe-delimited data you posted?
If that's the case (and I don't know how I could know that, again,
remember, I'm not familiar with Paytrace) you would do it like this:
/define
WEBFORMS
/copy
httpapi_h
D form s
like(WEBFORM)
D postData s
*
D postDataLen s 10i
0
D parmlist s 40000A
varying
/free
form =
WEBFORM_open();
parmlist =
'UN~demo123|PSWD~demo123|TERMS~Y|METHOD~ProcessTranx|'
+
'TRANXTYPE~Authorization|CC~4012881888818888|EXPMNTH~12|'
+
'EXPYR~12|AMOUNT~1.00|CSC~999|BADDRESS~1234|BZIP~83852|'
+ 'INVOICE~8888|';
WEBFORM_setPtr(
form
:
'parmlist'
: %addr(parmlist :
*data)
: %len(parmlist)
);
WEBFORM_postData(
form
:
postData
: postDataLen
);
rc = http_url_post( '[1]https://paytrace.com/api/default.asp'
: postData
: postDataLen
: '/tmp/httptest.html' );
WEBFORM_close(form);
I have no clue whether this is correct or not -- it's purely a guess,
and it's based ENTIRELY on the example you posted, so if your code is
wrong, then mine certainly will be, too.
I'm a little confused by the way you're calling http_url_post() as
well. You've added a ? to the URL, which typically denotes a query
string -- but you didn't provide any query strings. Did you intend for
this data to be passed as a query string rather than as post data?
That, again, is one of those details that should be documented by the
WS provider, and is something I wouldn't know. You need to read their
docs to find out.
Also, if it is meant to be a query string, are you certain that you
wanted to do a POST request? a query string is typically used with a
GET request. Again.. to know, you need to read their docs.
If you _are_ sending this as a post request, what Content-Type is
desired? You are specifying HTTPAPI's default value of text/xml -- and
your data is clearly NOT xml. Maybe it should be set to
application/x-www-form-urlencoded? Again, to know, you need to read
their docs.
-SK
On 10/18/2012 6:29 PM, J. Carlos Lugo wrote:
Hello Scott:
I have remove now the doble "||" character from the program, but still I get
the same error
ERROR~990. Please provide a properly formatted parameter string.|
Pay trace is expecting the entire POSTDATA as URL Encoded they are saying
that what I am sending is not URL Encoded.
Does HTTP API does the encode or I have to do something else or use a
different API from your Tool
Please advise
Regards,
Carlos Lugo
Multitec Consultants Group Inc.
( 310-717-7327
[2]JCLUGO@xxxxxxxxx
-----Original Message-----
From: J. Carlos Lugo [[3]mailto:jclugo@xxxxxxxxx]
Sent: Monday, October 15, 2012 10:07 AM
To: 'HTTPAPI and FTPAPI Projects'
Subject: RE: Web services
Hello Scott:
Thank you for your answer, Yes the Postdata is a Varying field
D postData s 40000A varying
We are running V6R1 and this is how the Post data Look in the Program and
when is doing the Post
postData =
'parmlist=' +
'UN~demo123|PSWD~demo123|TERMS~Y|METHOD~ProcessTranx|' +
'TRANXTYPE~Authorization|CC~4012881888818888|EXPMNTH~12|' +
'EXPYR~12|AMOUNT~1.00|CSC~999|BADDRESS~1234|BZIP~83852|' +
'INVOICE~8888|' ;
rc = http_url_post('[4]https://paytrace.com/api/default.pay?'
: %addr(postData:*DATA)
: %len(%trimr(postData))
: '/tmp/httptest.html');
Now I do not see the Special character anymore but now Still Paytrace is
sending me the following error below:
ERROR~990. Please provide a properly formatted parameter string.|
See the attached Text File for the Debug Log
I really appreciate all your help that you provide to all of us in using
your excellent tool for web services.
Regards,
Carlos Lugo
Multitec Consultants Group Inc.
( 310-717-7327
[5]JCLUGO@xxxxxxxxx
-----Original Message-----
From: [6]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
[[7]mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Scott Klement
Sent: Friday, October 12, 2012 3:51 PM
To: HTTPAPI and FTPAPI Projects
Subject: Re: Web services
Hi Carlos,
My guess would be that postData is a VARYING field. This is just a guess,
because you did not include the definition of this field in your message,
but it would explain the behavior you're seeing.
VARYING fields are stored in memory as a 2 or 4 byte unsigned integer that
keeps track of the current length of the field, followed by the actual
characters in the field. So if your postData variable is 65535
long or shorter, the first two bytes in memory would be the length.
When you pass %addr(postData) to HTTPAPI, the address you're supplying
points to those length bytes, so HTTPAPI dutifully sends those length bytes
to the server.
That's why in some of my examples, you'll see me do: %addr(myVar) +
2. The +2 provides an address that's two bytes higher -- i.e. it
skips over those two length bytes. On V6R1 and higher, IBM gave us a
way to do that automatically with %ADDR(myVar:*DATA), which is better
because it's more self-documenting.
Anyway, try changing your code to %ADDR(postData: *DATA) or if you're still
on V5R4 or earlier, do %ADDR(postData)+2 and see if that solves the problem.
Good luck!
On 10/12/2012 1:48 PM, J. Carlos Lugo wrote:
Hello All:
I am submitting a HTTP Post to Pay Trace web services but when pay
trace received my Data String shows a weird character
Here is the Data String submitted to Pay Trace
Hello, and thank you for contacting Pay Trace.
We can see ' ¬- ' before the parmlist. Beyond that it is formatted
correctly. Here is the same information without the ' ¬- ' in there
which works correctly when submitted through a browser.
[1][8]https://paytrace.com/api/default.pay?parmlist=UN~demo123|PSWD~demo12
3|TERMS~Y|METHOD~ProcessTranx|TRANXTYPE~Authorization|CC~40128818888188
88|EXPMNTH~12|EXPYR~12|AMOUNT~1.00|CSC~999|BADDRESS~1234|BZIP~83852|INV
OICE~8888|
HERE is your string
[2][9]https://paytrace.com/api/default.pay?
¬-parmlist=UN~demo123|PSWD~demo123|TERMS~Y|METHOD~ProcessTranx|TRANXTYP
E~Authorization|CC~4012881888818888|EXPMNTH~12|EXPYR~12|AMOUNT~1.00|CSC
~999|BADDRESS~1234|BZIP~83852|INVOICE~8888|
Here is what I have in the program to test the HTTP Post
postData =
'parmlist=' +
'UN~demo123|PSWD~demo123|TERMS~Y|METHOD~ProcessTranx|' +
'TRANXTYPE~Authorization|CC~4012881888818888|EXPMNTH~12|' +
'EXPYR~12|AMOUNT~1.00|CSC~999|BADDRESS~1234|BZIP~83852|' +
'INVOICE~8888|'+ CRLF ;
rc = http_url_post('[10]https://paytrace.com/api/default.pay?'
: %addr(postData)
: %len(%trimr(postData))
: '/tmp/httptest.html');
Any advise will be appreciate it if I am using the right HTTP_URL_POST
or should I use a Different POST Process to void the character that
they Pay trace found in my data string.
http_url_post_raw?
Regards,
Carlos Lugo
Multitec Consultants Group Inc.
( 310-717-7327
[11]JCLUGO@xxxxxxxxx
References
1.
[12]https://paytrace.com/api/default.pay?parmlist=UN~demo123|PSWD~demo123|TERMS~
Y|METHOD~ProcessTranx|TRANXTYPE~Authorization|CC~4012881888818888|EXPMNTH~12
|EXPYR~12|AMOUNT~1.00|CSC~999|BADDRESS~1234|BZIP~83852|INVOICE~8888|
2. [13]https://paytrace.com/api/default.pay
----------------------------------------------------------------------
- This is the FTPAPI mailing list. To unsubscribe, please go to:
[14]http://www.scottklement.com/mailman/listinfo/ftpapi
----------------------------------------------------------------------
-
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
[15]http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
References
1. https://paytrace.com/api/default.asp
2. mailto:JCLUGO@xxxxxxxxx
3. mailto:jclugo@xxxxxxxxx
4. https://paytrace.com/api/default.pay
5. mailto:JCLUGO@xxxxxxxxx
6. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
7. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
8. https://paytrace.com/api/default.pay?parmlist=UN~demo123
9. https://paytrace.com/api/default.pay
10. https://paytrace.com/api/default.pay
11. mailto:JCLUGO@xxxxxxxxx
12. https://paytrace.com/api/default.pay?parmlist=UN~demo123
13. https://paytrace.com/api/default.pay
14. http://www.scottklement.com/mailman/listinfo/ftpapi
15. http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------