在C#中使用CURL

        private string args = ""; 
        ///


        /// 参数
        ///

        public string Args { get { return args; } set { args = value; } }

        ///


        /// 设置参数
        ///

        /// 参数值
        public void SetArg(string value)
        {
            if (string.IsNullOrEmpty(args)) { args = value; } else { args += " " + value; }
        }

        //将cmd的标准输入和输出全部重定向到.NET的程序里
            processStartInfo.UseShellExecute = false;
            processStartInfo.RedirectStandardInput = true;
            processStartInfo.RedirectStandardOutput = true;
            processStartInfo.RedirectStandardError = false;
            processStartInfo.CreateNoWindow = true;
            processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

 

 

        #region 运行
        ///


        /// 运行
        ///

        ///
        public string Run()
        {
            processStartInfo.FileName = Const.CURLPATH;
            processStartInfo.Arguments = args;
            try
            {
                process = Process.Start(processStartInfo);
            }
            catch
            {
                              return process.StandardError.ReadToEnd();
            }
            string resaultValue = process.StandardOutput.ReadToEnd();
            process.WaitForExit();
            process.Close();
            return resaultValue;

        }
        #endregion 运行

 

1. SetArg(" http://XXX.com");  //取得网站内容

2.

--insecure

--request PUT

--basic

-u 用户名:密码

-X IP:端口 代理

...具体查看CURL命令

注意

若要取得CURL自身的错误输出 ,则要使用参数http://www.itkbase.net

-stderr "-"

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:10 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:11 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:12 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:13 --:--:--     0

上面可使用curlHelper.SetArg("-s --show-error");去除

Usage: curl [options...]
Options: (H) means HTTP/HTTPS only, (F) means FTP only
 -a/--append        Append to target file when uploading (F)
 -A/--user-agent User-Agent to send to server (H)
    --anyauth       Pick "any" authentication method (H)
 -b/--cookie Cookie string or file to read cookies from (H)
    --basic         Use HTTP Basic Authentication (H)
 -B/--use-ascii     Use ASCII/text transfer
 -c/--cookie-jar Write cookies to this file after operation (H)
 -C/--continue-at Resumed transfer offset
 -d/--data    HTTP POST data (H)
    --data-ascii   HTTP POST ASCII data (H)
    --data-binary HTTP POST binary data (H)
    --negotiate     Use HTTP Negotiate Authentication (H)
    --digest        Use HTTP Digest Authentication (H)
    --disable-eprt  Inhibit using EPRT or LPRT (F)
    --disable-epsv  Inhibit using EPSV (F)
 -D/--dump-header Write the headers to this file
    --egd-file EGD socket path for random data (SSL)
    --tcp-nodelay   Use the TCP_NODELAY option
 -e/--referer       Referer URL (H)
 -E/--cert Client certificate file and password (SSL)
    --cert-type Certificate file type (DER/PEM/ENG) (SSL)
    --key      Private key file name (SSL/SSH)
    --key-type Private key file type (DER/PEM/ENG) (SSL)
    --pass    Pass phrase for the private key (SSL/SSH)
    --pubkey   Public key file name (SSH)
    --engine   Crypto engine to use (SSL). "--engine list" for list
    --cacert CA certificate to verify peer against (SSL)
    --capath CA directory (made using c_rehash) to verify
                    peer against (SSL)
    --ciphers SSL ciphers to use (SSL)
    --compressed    Request compressed response (using deflate or gzip)
    --connect-timeout Maximum time allowed for connection
    --create-dirs   Create necessary local directory hierarchy
    --crlf          Convert LF to CRLF in upload
 -f/--fail          Fail silently (no output at all) on HTTP errors (H)
    --ftp-account Account data to send when requested by server (F)
    --ftp-alternative-to-user String to replace "USER [name]" (F)
    --ftp-create-dirs Create the remote dirs if not present (F)
    --ftp-method [multicwd/nocwd/singlecwd] Control CWD usage (F)
    --ftp-pasv      Use PASV/EPSV instead of PORT (F)
    --ftp-skip-pasv-ip Skip the IP address for PASV (F)
    --ftp-ssl       Try SSL/TLS for ftp transfer (F)
    --ftp-ssl-control Require SSL/TLS for ftp login, clear for transfer (F)
    --ftp-ssl-reqd  Require SSL/TLS for ftp transfer (F)
    --ftp-ssl-ccc   Send CCC after authenticating (F)
    --ftp-ssl-ccc-mode [active/passive] Set CCC mode (F)
 -F/--form Specify HTTP multipart POST data (H)
    --form-string Specify HTTP multipart POST data (H)
 -g/--globoff       Disable URL sequences and ranges using {} and []
 -G/--get           Send the -d data with a HTTP GET (H)
 -h/--help          This help text
 -H/--header Custom header to pass to server (H)
    --ignore-content-length  Ignore the HTTP Content-Length header
 -i/--include       Include protocol headers in the output (H/F)
 -I/--head          Show document info only
 -j/--junk-session-cookies Ignore session cookies read from file (H)
    --interface Specify network interface/address to use
    --krb    Enable kerberos with specified security level (F)
 -k/--insecure      Allow connections to SSL sites without certs (H)
 -K/--config        Specify which config file to read
    --libcurl Dump libcurl equivalent code of this command line
 -l/--list-only     List only names of an FTP directory (F)
    --limit-rate Limit transfer speed to this rate
    --local-port [-num] Force use of these local port numbers

 -L/--location      Follow Location: hints (H)
    --location-trusted Follow Location: and send authentication even
                    to other hostnames (H)
 -m/--max-time Maximum time allowed for the transfer
    --max-redirs Maximum number of redirects allowed (H)
    --max-filesize Maximum file size to download (H/F)
 -M/--manual        Display the full manual
 -n/--netrc         Must read .netrc for user name and password
    --netrc-optional Use either .netrc or URL; overrides -n
    --ntlm          Use HTTP NTLM authentication (H)
 -N/--no-buffer     Disable buffering of the output stream
    --no-sessionid  Disable SSL session-ID reusing (SSL)
 -o/--output Write output to instead of stdout
 -O/--remote-name   Write output to a file named as the remote file
 -p/--proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)
    --proxy-anyauth Pick "any" proxy authentication method (H)
    --proxy-basic   Use Basic authentication on the proxy (H)
    --proxy-digest  Use Digest authentication on the proxy (H)
    --proxy-ntlm    Use NTLM authentication on the proxy (H)
 -P/--ftp-port

Use PORT with address instead of PASV (F)
 -q                 If used as the first parameter disables .curlrc
 -Q/--quote    Send command(s) to server before file transfer (F/SFTP)
 -r/--range Retrieve a byte range from a HTTP/1.1 or FTP server
    --random-file File for reading random data from (SSL)
    --raw           Pass HTTP "raw", without any transfer decoding (H)
 -R/--remote-time   Set the remote file's time on the local output
    --retry    Retry request times if transient problems occur
    --retry-delay When retrying, wait this many seconds between each
    --retry-max-time Retry only within this period
 -s/--silent        Silent mode. Don't output anything
 -S/--show-error    Show error. With -s, make curl show errors when they occur
    --socks4 Use SOCKS4 proxy on given host   port
    --socks5 Use SOCKS5 proxy on given host   port
    --stderr Where to redirect stderr. - means stdout
 -t/--telnet-option Set telnet option
    --trace   Write a debug trace to the given file
    --trace-ascii Like --trace but without the hex output
    --trace-time    Add time stamps to trace/verbose output
 -T/--upload-file Transfer to remote site
    --url      Set URL to work with
 -u/--user Set server user and password
 -U/--proxy-user Set proxy user and password
 -v/--verbose       Make the operation more talkative
 -V/--version       Show version number and quit
 -w/--write-out [format] What to output after completion
 -x/--proxy Use HTTP proxy on given port
 -X/--request Specify request command to use
 -y/--speed-time    Time needed to trig speed-limit abort. Defaults to 30
 -Y/--speed-limit   Stop transfer if below speed-limit for 'speed-time' secs
 -z/--time-cond

你可能感兴趣的:(C/C++)