I recently needed to compare post data from cUrl and webMethods 9.9. The cUrl request worked like a charm but the same request from the pub.client.http service failed to be recognized by the consumer. I then got a tip from a colleague to use the netcat program to catch the output from both programs and compare the results. Here is how I did:
Start a listener on an non-privileged port eg. 8000
nc -l 8000
With this running in one console window we switch to another and run a curl command eg.
curl -F attachment=@file.csv http://localhost:8000
The file.csv in this example is a MIME message
The message is now captured and written to the console like this:
POST / HTTP/1.1 Host: localhost:8000 User-Agent: curl/7.54.0 Accept: */* Content-Length: 382 Expect: 100-continue Content-Type: multipart/form-data; boundary=--10e698fa110003d5 ----10e698fa110003d5 Content-Disposition: form-data; name="attachment"; filename="file.csv" Content-Type: application/octet-stream HELLO WORLD ----10e698fa110003d5--
TIP 1:
Start nc like this:
nc -l localhost 8000 &
Now run curl like this:
curl --proxy localhost:8000 --silent --max-time 1 http://blog.niklasottosson.com
And you will catch one and one only request
TIP 2:
Start nc like this:
nc -l loclahost 8000 > request.txt
And you will catch the request in a file called request.txt
Tested on OSX 10.13.6 and cUrl 7.54.0