<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
        <title>Apache JMeter
          -
          User's Manual: Curl</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
        <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
        <link rel="stylesheet" type="text/css" href="../css/new-style.css">
        <link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png">
        <link rel="icon" href="../images/favicon.png">
        <meta name="msapplication-TileColor" content="#ffffff">
        <meta name="msapplication-TileImage" content="../images/mstile-144x144.png">
        <meta name="theme-color" content="#ffffff">
    </head>
    <body role="document">
        <a href="#content" class="hidden">Main content</a>
        <div class="header">
            <!--
            APACHE LOGO
          -->
            <div>
                <a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a>
            </div>
            <!--
              PROJECT LOGO
            -->
            <div>
                <a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a>
            </div>
            <div class="banner">
                <a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
                <div class="clear"></div>
            </div>
        </div>
        <div class="nav">
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">About</div>
                    <ul>
                        <li>
                            <a href="../index.html">Overview</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/licenses/">License</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Download</div>
                    <ul>
                        <li>
                            <a href="../download_jmeter.cgi">Download Releases</a>
                        </li>
                        <li>
                            <a href="../changes.html">Release Notes</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Documentation</div>
                    <ul>
                        <li>
                            <a href="../usermanual/get-started.html">Get Started</a>
                        </li>
                        <li>
                            <a href="../usermanual/index.html">User Manual</a>
                        </li>
                        <li>
                            <a href="../usermanual/best-practices.html">Best Practices</a>
                        </li>
                        <li>
                            <a href="../usermanual/component_reference.html">Component Reference</a>
                        </li>
                        <li>
                            <a href="../usermanual/functions.html">Functions Reference</a>
                        </li>
                        <li>
                            <a href="../usermanual/properties_reference.html">Properties Reference</a>
                        </li>
                        <li>
                            <a href="../changes_history.html">Change History</a>
                        </li>
                        <li>
                            <a href="../api/index.html">Javadocs</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Tutorials</div>
                    <ul>
                        <li>
                            <a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
                        </li>
                        <li>
                            <a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Community</div>
                    <ul>
                        <li>
                            <a href="../issues.html">Issue Tracking</a>
                        </li>
                        <li>
                            <a href="../security.html">Security</a>
                        </li>
                        <li>
                            <a href="../mail.html">Mailing Lists</a>
                        </li>
                        <li>
                            <a href="../svnindex.html">Source Repositories</a>
                        </li>
                        <li>
                            <a href="../building.html">Building and Contributing</a>
                        </li>
                        <li>
                            <a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Foundation</div>
                    <ul>
                        <li>
                            <a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
                        </li>
                        <li>
                            <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
        <div class="main" id="content">
            <div class="social-media">
                <ul class="social-media-links">
                    <li class="twitter">
                        <a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
                    </li>
                    <li class="github">
                        <a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
                    </li>
                </ul>
            </div>
            <ul class="pagelinks">
                <li>
                    <a href="glossary.html">&lt; Prev</a>
                </li>
                <li>
                    <a href="../index.html">Index</a>
                </li>
                <li>
                    <a href="history_future.html">Next &gt;</a>
                </li>
            </ul>
            <div class="section">
                <h1 id="hints">
                    24. Curl<a class="sectionlink" href="#hints" title="Link to here">&para;</a>
                </h1>
                
                <p>
                    This method is to create http requests from curl command. If you want to know more about curl, please click the <a href="https://curl.haxx.se/">
Curl document</a>.

                </p>
                
                <div class="subsection">
                    <h2 id="enter_command">
                        24.1 How to enter (a) command(s)<a class="sectionlink" href="#enter_command" title="Link to here">&para;</a>
                    </h2>
                    
                    <p>
Create a Test Plan From a cURL Command
</p>
                    
                    <ol>
                          
                        <li>
                            To create an import from a cURL, open the <span class="code">Tools</span> menu and click <span class="code">Import from cURL</span>.
    
                            <figure>
                                <a href="../images/screenshots/curl/choose_curl.png"><img src="../images/screenshots/curl/choose_curl.png" width="768" height="339" alt="Figure 1 - The menu where curl is located"></a>
                                <figcaption>Figure 1 - The menu where curl is located</figcaption>
                            </figure>
                              
                        </li>
                            
                        <li>
                            There are two ways to enter the curl command line. Firstly, we can enter it manually. Secondly, we can import a file containing the curl command line.
    This tool supports input of multiple curl command lines at the same time.
    
                            <figure>
                                <a href="../images/screenshots/curl/enter_command.png"><img src="../images/screenshots/curl/enter_command.png" width="767" height="443" alt="Figure 2.1 - Enter curl command in text panel"></a>
                                <figcaption>Figure 2.1 - Enter curl command in text panel</figcaption>
                            </figure>
                                
                            <figure>
                                <a href="../images/screenshots/curl/enter_command_from_file.png"><img src="../images/screenshots/curl/enter_command_from_file.png" width="767" height="449" alt="Figure 2.2 - Enter curl command from file"></a>
                                <figcaption>Figure 2.2 - Enter curl command from file</figcaption>
                            </figure>
                              
                        </li>
                          
                        <li>
                            Then, click <span class="code">Create Test Plan</span> button and a new HTTP Sample will be added to the Test Plan.
    
                            <figure>
                                <a href="../images/screenshots/curl/result.png"><img src="../images/screenshots/curl/result.png" width="767" height="464" alt="Figure 3 - result of Test Plan"></a>
                                <figcaption>Figure 3 - result of Test Plan</figcaption>
                            </figure>
                              
                        </li>
                        
                    </ol>
                    
                </div>
                
                <div class="subsection">
                    <h2 id="curl_options">
                        24.2 Curl options supported<a class="sectionlink" href="#curl_options" title="Link to here">&para;</a>
                    </h2>
                    
                    <dl>
                          
                        <dt>
                            <span class="code">-H</span>, <span class="code">--header &lt;header&gt;</span>
                        </dt>
                          
                        <dd>Extra header to use when getting a web page.</dd>
                          
                        <dt>
                            <span class="code">-X</span>, <span class="code">--request &lt;command&gt;</span>
                        </dt>
                          
                        <dd>Specifies a custom request method to use when communicating with the HTTP server.</dd>
                          
                        <dt>
                            <span class="code">--compressed</span>
                        </dt>
                          
                        <dd>Request a compressed response using one of the algorithms curl supports, and return the uncompressed document.</dd>
                          
                        <dt>
                            <span class="code">-A</span>, <span class="code">--user-agent &lt;agent string&gt;</span>
                        </dt>
                          
                        <dd>Specify the User-Agent string to send to the HTTP server.</dd>
                          
                        <dt>
                            <span class="code">-b</span>, <span class="code">--cookie &lt;name=data&gt;</span>
                        </dt>
                          
                        <dd>Pass the data to the HTTP server as a cookie.</dd>
                          
                        <dt>
                            <span class="code">-d</span> and friends
                        </dt>
                          
                        <dd>
                            <p>Sending data via POST request</p>
                                
                            <p>
                                Sends the specified data in a POST request to the HTTP server. If this option is used more than
    once on the same command line, the data pieces specified will be merged together with a
    separating '<span class="code">&amp;</span>' character. Thus, using '<span class="code">-d name=daniel -d skill=lousy</span>' would generate a POST
    chunk that looks like '<span class="code">name=daniel&amp;skill=lousy</span>'.
                            </p>
                                
                            <dl>
                                      
                                <dt>
                                    <span class="code">-d</span>, <span class="code">--data &lt;data&gt;</span>, <span class="code">--data-ascii &lt;data&gt;</span>
                                </dt>
                                      
                                <dd>
                                    use <span class="code">@</span> to upload a file
                                </dd>
                                      
                                <dt>
                                    <span class="code">--data-raw &lt;data&gt;</span>gt;
                                </dt>
                                      
                                <dd></dd>
                                      
                                <dt>
                                    <span class="code">--data-raw &lt;data&gt;</span>
                                </dt>
                                      
                                <dd>
                                    This posts data exactly as specified with no extra processing whatsoever.
        If you start the data with the character <span class="code">@,</span> the rest should be a filename.
                                </dd>
                                      
                                <dt>
                                    <span class="code">--data-raw &lt;data&gt;</span>ta&gt;
                                </dt>
                                      
                                <dd>
                                    This posts data, similar to the other <span class="code">--data</span> options with the exception that this performs
        URL-encoding.
                                </dd>
                                      
                                <dt>
                                    <span class="code">--data-raw &lt;data&gt;</span>
                                </dt>
                                      
                                <dd>
                                    This posts data similarly to <span class="code">--data</span> but without the special interpretation
        of the <span class="code">@</span> character.
                                </dd>
                                    
                            </dl>
                              
                        </dd>
                          
                        <dt>
                            <span class="code">-F</span> and friends
                        </dt>
                          
                        <dd>
                                
                            <p>This lets curl emulate a filled-in form in which a user has pressed the submit button.</p>
                                
                            <dl>
                                      
                                <dt>
                                    <span class="code">-F</span>, <span class="code">--form &lt;name=content&gt;</span>
                                </dt>
                                      
                                <dd>
                                    use <span class="code">@</span> to upload a file
                                </dd>
                                      
                                <dt>
                                    <span class="code">--form-string &lt;name=content&gt;</span>
                                </dt>
                                      
                                <dd></dd>
                                    
                            </dl>
                              
                        </dd>
                          
                        <dt>
                            <span class="code">-u</span>, --user &lt;user:password &gt;
                        </dt>
                          
                        <dd>Specify user and password to use for server authentication.</dd>
                          
                        <dt>
                            <span class="code">--basic</span>, <span class="code">--digest</span>
                        </dt>
                          
                        <dd>Tells curl to use HTTP authentication.</dd>
                          
                        <dt>
                            <span class="code">--cacert</span> and friends
                        </dt>
                          
                        <dd>
                                
                            <p>Tells curl to use the specified client certificate file when getting a file with HTTPS</p>
                                
                            <dl>
                                      
                                <dt>
                                    <span class="code">--cacert &lt;CA certificate&gt;</span>
                                </dt>
                                      
                                <dt>
                                    <span class="code">--capath  &lt;CA certificate directory&gt;</span>
                                </dt>
                                      
                                <dt>
                                    <span class="code">--ciphers &lt;list of ciphers&gt;</span>
                                </dt>
                                      
                                <dt>
                                    <span class="code">--cert-status</span>
                                </dt>
                                      
                                <dt>
                                    <span class="code">--cert-type &lt;type&gt;</span>
                                </dt>
                                    
                            </dl>
                              
                        </dd>
                          
                        <dt>
                            <span class="code">-G</span>, <span class="code">--get</span>
                        </dt>
                          
                        <dd>put the post data in the URL and use get to replace post.</dd>
                          
                        <dt>
                            <span class="code">--no-keepalive</span>
                        </dt>
                          
                        <dd>Disables the use of keepalive messages on the TCP connection.</dd>
                          
                        <dt>
                            <span class="code">-e</span>, <span class="code">--referer &lt;URL&gt;</span>
                        </dt>
                          
                        <dd>
                            Sends the <em>Referer Page</em> information to the HTTP server.
                        </dd>
                          
                        <dt>
                            <span class="code">-L</span>, <span class="code">--location</span>
                        </dt>
                          
                        <dd>If the server reports that the requested page has moved to a different location
    this option will make curl redo the request on the new place.</dd>
                          
                        <dt>
                            <span class="code">-i</span>, <span class="code">--include</span>
                        </dt>
                          
                        <dd>Include the HTTP-header in the output.</dd>
                          
                        <dt>
                            <span class="code">--connect-timeout &lt;seconds&gt;</span>
                        </dt>
                          
                        <dd>Maximum time in seconds that the connection to the server may take.</dd>
                          
                        <dt>
                            <span class="code">--keepalive-time &lt;seconds&gt;</span>
                        </dt>
                          
                        <dd>This option sets the time a connection needs to remain idle before sending keepalive probes
    and the time between individual keepalive probes.</dd>
                          
                        <dt>
                            <span class="code">-m</span>, <span class="code">--max-time  &lt;seconds&gt;</span>
                        </dt>
                          
                        <dd>Maximum time in seconds that you allow the whole operation to take.</dd>
                          
                        <dt>
                            <span class="code">-x</span>, <span class="code">--proxy &lt;[protocol://][user:password@]proxyhost[:port]&gt;</span>
                        </dt>
                          
                        <dd>
                            Use the specified HTTP proxy. If the port number is not specified,
    it is assumed at port <span class="code">1080</span>.
                        </dd>
                          
                        <dt>
                            <span class="code">-U</span>, <span class="code">--proxy-user  &lt;user:password&gt;</span>
                        </dt>
                          
                        <dd>Specify user and password to use for proxy authentication.</dd>
                          
                        <dt>
                            <span class="code">-k</span>, <span class="code">--insecure</span>
                        </dt>
                          
                        <dd>
                            This option explicitly allows curl to perform <em>insecure</em> SSL connections and transfers.
                        </dd>
                          
                        <dt>
                            <span class="code">--raw</span>
                        </dt>
                          
                        <dd>When used, it disables all internal HTTP decoding of content or transfer encodings and instead makes them passed on unaltered,raw.</dd>
                          
                        <dt>
                            <span class="code">-I</span>, <span class="code">--head</span>
                        </dt>
                          
                        <dd>
                            Fetch the HTTP-header only. HTTP-servers feature the method <span class="code">HEAD</span> which this uses to get nothing but the header of a document.
                        </dd>
                          
                        <dt>
                            <span class="code">--interface &lt;name&gt;</span>
                        </dt>
                          
                        <dd>Perform an operation using a specified interface. You can enter interface name, IP address or host name.</dd>
                          
                        <dt>
                            <span class="code">--proxy-ntlm</span>/<span class="code">--proxy-negotiate</span>
                        </dt>
                          
                        <dd>Tells curl to use HTTP BASIC/NTLM/Digest authentication when communicating with the given proxy.</dd>
                          
                        <dt>
                            <span class="code">--dns-servers &lt;addresses&gt;</span>
                        </dt>
                          
                        <dd>Resolve host name over DOH.</dd>
                          
                        <dt>
                            <span class="code">--resolve &lt;host:port:address&gt;</span>
                        </dt>
                          
                        <dd>Provide a custom address for a specific host and port pair.</dd>
                          
                        <dt>
                            <span class="code">--limit-rate &lt;speed&gt;</span>
                        </dt>
                          
                        <dd>Specify the maximum transfer rate you want curl to use.</dd>
                          
                        <dt>
                            <span class="code">--max-redirs &lt;num&gt;</span>
                        </dt>
                          
                        <dd>Set maximum number of redirections which may be followed.</dd>
                          
                        <dt>
                            <span class="code">--noproxy &lt;no-proxy-list&gt;</span>
                        </dt>
                          
                        <dd>Comma-separated list of hosts which do not use a proxy, if one is specified.</dd>
                        
                    </dl>
                    
                </div>
                
                <div class="subsection">
                    <h2 id="warning">
                        24.3 Warning<a class="sectionlink" href="#warning" title="Link to here">&para;</a>
                    </h2>
                    
                    <p>
When the command you entered is ignored or contains warning content, we will display warning in the comment section of HTTP Request.
</p>
                    
                    <figure>
                        <a href="../images/screenshots/curl/http_request_warning.png"><img src="../images/screenshots/curl/http_request_warning.png" width="768" height="464" alt="Figure 1 -Warning"></a>
                        <figcaption>Figure 1 -Warning</figcaption>
                    </figure>
                    
                </div>
                
                <div class="subsection">
                    <h2 id="example">
                        24.4 Examples<a class="sectionlink" href="#example" title="Link to here">&para;</a>
                    </h2>
                    
                    <p>
                        <b>Use cookie</b>
                        <pre class="source">curl -X POST  "https://example.invalid" -b 'username=Tom;password=123456'</pre>
                    </p>
                    
                    <p>
                        <b>Use data</b>
                        <pre class="source">curl -X POST  "https://example.invalid" --data 'fname=a&amp;lname=b'</pre>
                    </p>
                    
                    <p>
                        <b>Use form</b>
                        <pre class="source">curl -X POST  "https://example.invalid" -F 'lname=a'  -F 'fname=b' -F 'c=@C:\Test\test.txt'</pre>
                    </p>
                    
                    <p>
                        <b>Use proxy</b>
                        <pre class="source">curl 'https://example.invalid/' -x 'https://aa:bb@proxy.invalid:8042'</pre>
                    </p>
                    
                    <p>
                        <b>Use authorization</b>
                        <pre class="source">curl "https://example.invalid" -u 'user:passwd' --basic</pre>
                    </p>
                    
                    <p>
                        <b>Use DNS</b>
                        <pre class="source">curl "https://example.invalid" --dns-servers '0.0.0.0,1.1.1.1'</pre>
                    </p>
                    
                </div>
                
            </div>
            <ul class="pagelinks">
                <li>
                    <a href="glossary.html">&lt; Prev</a>
                </li>
                <li>
                    <a href="../index.html">Index</a>
                </li>
                <li>
                    <a href="history_future.html">Next &gt;</a>
                </li>
            </ul>
            <div class="share-links">
                      Share this page:
      
                <ul>
                    <li class="fb">
                        <a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
                    </li>
                    <li class="twitter">
                        <a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
                    </li>
                </ul>
            </div>
            <a href="#top" id="topButton">Go to top</a>
        </div>
        <div class="footer">
            <div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2024
            , Apache Software Foundation
          </div>
            <div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
        </div>
        <script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
    </body>
</html>
