Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSbTargetCurl
    Handle hoHttpCurl
    Variant vSbRawRequest
    Handle hoSbRawRequest
    String sTemp1

    Move False To iSuccess

    // 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.
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbTargetCurl
    If (Not(IsComObjectCreated(hoSbTargetCurl))) Begin
        Send CreateComObject of hoSbTargetCurl
    End
    Get ComAppendLn Of hoSbTargetCurl " curl -X POST https://httpbin.org/post \" To iSuccess
    Get ComAppendLn Of hoSbTargetCurl '      -H "Content-Type: application/json" \' To iSuccess
    Get ComAppendLn Of hoSbTargetCurl "      -d '{" To iSuccess
    Get ComAppendLn Of hoSbTargetCurl '            "title": "foo",' To iSuccess
    Get ComAppendLn Of hoSbTargetCurl '            "body": "bar",' To iSuccess
    Get ComAppendLn Of hoSbTargetCurl '            "userId": 1' To iSuccess
    Get ComAppendLn Of hoSbTargetCurl "          }'" To iSuccess

    Get Create (RefClass(cComChilkatHttpCurl)) To hoHttpCurl
    If (Not(IsComObjectCreated(hoHttpCurl))) Begin
        Send CreateComObject of hoHttpCurl
    End

    // 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.
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbRawRequest
    If (Not(IsComObjectCreated(hoSbRawRequest))) Begin
        Send CreateComObject of hoSbRawRequest
    End
    Get ComGetAsString Of hoSbTargetCurl To sTemp1
    Get pvComObject of hoSbRawRequest to vSbRawRequest
    Get ComToRawRequest Of hoHttpCurl sTemp1 vSbRawRequest To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttpCurl To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Display the generated raw HTTP request.
    Get ComGetAsString Of hoSbRawRequest To sTemp1
    Showln sTemp1

    // Expected output:

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


End_Procedure