Sample code for 30+ languages & platforms
PowerBuilder

Viewing the Raw HTTP Request Generated from a curl Command

See more CURL Examples

This example demonstrates how to convert a curl command into the exact raw HTTP request that would be sent to the server—without actually sending it.

By calling ToRawRequest, the curl command is translated into its underlying HTTP representation, including the request line, headers, and body. This is especially useful for debugging, verifying request formatting, and understanding how a curl command maps to a real HTTP request.

In this example, a POST request with a JSON body is constructed using curl syntax. The code then converts it to the raw HTTP request format and prints the result. This allows you to inspect details such as the Content-Length, header formatting, and the exact payload being transmitted.

This technique is helpful when troubleshooting issues related to request composition, encoding, or server-side behavior.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_SbTargetCurl
oleobject loo_HttpCurl
oleobject loo_SbRawRequest

li_Success = 0

// Build a curl command and convert it to the raw HTTP request that would be sent.
// This allows you to inspect the exact request (headers + body) without actually sending it.

//  curl -X POST https://httpbin.org/post \
//       -H "Content-Type: application/json" \
//       -d '{
//             "title": "foo",
//             "body": "bar",
//             "userId": 1
//           }'

// The backslashes at the end of lines are not required.  Chilkat ignores them if present.
loo_SbTargetCurl = create oleobject
li_rc = loo_SbTargetCurl.ConnectToNewObject("Chilkat.StringBuilder")
if li_rc < 0 then
    destroy loo_SbTargetCurl
    MessageBox("Error","Connecting to COM object failed")
    return
end if
loo_SbTargetCurl.AppendLn(" curl -X POST https://httpbin.org/post ~")
loo_SbTargetCurl.AppendLn("      -H ~"Content-Type: application/json~" ~")
loo_SbTargetCurl.AppendLn("      -d '{")
loo_SbTargetCurl.AppendLn("            ~"title~": ~"foo~",")
loo_SbTargetCurl.AppendLn("            ~"body~": ~"bar~",")
loo_SbTargetCurl.AppendLn("            ~"userId~": 1")
loo_SbTargetCurl.AppendLn("          }'")

loo_HttpCurl = create oleobject
li_rc = loo_HttpCurl.ConnectToNewObject("Chilkat.HttpCurl")

// Convert the curl command into a raw HTTP request string.
// This is useful for debugging, as it shows exactly what would be sent to the server
// (request line, headers, and body) for the given curl command.
loo_SbRawRequest = create oleobject
li_rc = loo_SbRawRequest.ConnectToNewObject("Chilkat.StringBuilder")

li_Success = loo_HttpCurl.ToRawRequest(loo_SbTargetCurl.GetAsString(),loo_SbRawRequest)
if li_Success = 0 then
    Write-Debug loo_HttpCurl.LastErrorText
    destroy loo_SbTargetCurl
    destroy loo_HttpCurl
    destroy loo_SbRawRequest
    return
end if

// Display the generated raw HTTP request.
Write-Debug loo_SbRawRequest.GetAsString()

// Expected output:

// POST /post HTTP/1.1
// Host: httpbin.org
// Content-Type: application/json
// Content-Length: 96
// 
// {
//             "title": "foo",
//             "body": "bar",
//             "userId": 1
//           }


destroy loo_SbTargetCurl
destroy loo_HttpCurl
destroy loo_SbRawRequest