• 在C#中使用CURL


     private string args = ""; 
            /// <summary>
            /// 参数
            /// </summary>
            public string Args { get { return args; } set { args = value; } }

            /// <summary>
            /// 设置参数
            /// </summary>
            /// <param name="value">参数值</param>
            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 运行
            /// <summary>
            /// 运行
            /// </summary>
            /// <returns></returns>
            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...] <url>
    Options: (H) means HTTP/HTTPS only, (F) means FTP only
     -a/--append        Append to target file when uploading (F)
     -A/--user-agent <string> User-Agent to send to server (H)
        --anyauth       Pick "any" authentication method (H)
     -b/--cookie <name=string/file> 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 <file> Write cookies to this file after operation (H)
     -C/--continue-at <offset> Resumed transfer offset
     -d/--data <data>   HTTP POST data (H)
        --data-ascii <data>  HTTP POST ASCII data (H)
        --data-binary <data> 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 <file> Write the headers to this file
        --egd-file <file> EGD socket path for random data (SSL)
        --tcp-nodelay   Use the TCP_NODELAY option
     -e/--referer       Referer URL (H)
     -E/--cert <cert[:passwd]> Client certificate file and password (SSL)
        --cert-type <type> Certificate file type (DER/PEM/ENG) (SSL)
        --key <key>     Private key file name (SSL/SSH)
        --key-type <type> Private key file type (DER/PEM/ENG) (SSL)
        --pass  <pass>  Pass phrase for the private key (SSL/SSH)
        --pubkey <key>  Public key file name (SSH)
        --engine <eng>  Crypto engine to use (SSL). "--engine list" for list
        --cacert <file> CA certificate to verify peer against (SSL)
        --capath <directory> CA directory (made using c_rehash) to verify
                        peer against (SSL)
        --ciphers <list> SSL ciphers to use (SSL)
        --compressed    Request compressed response (using deflate or gzip)
        --connect-timeout <seconds> 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 <data> 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 <name=content> Specify HTTP multipart POST data (H)
        --form-string <name=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 <line> 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 <interface> Specify network interface/address to use
        --krb <level>   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 <file> Dump libcurl equivalent code of this command line
     -l/--list-only     List only names of an FTP directory (F)
        --limit-rate <rate> Limit transfer speed to this rate
        --local-port <num>[-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 <seconds> Maximum time allowed for the transfer
        --max-redirs <num> Maximum number of redirects allowed (H)
        --max-filesize <bytes> 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 <file> Write output to <file> 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 <address> Use PORT with address instead of PASV (F)
     -q                 If used as the first parameter disables .curlrc
     -Q/--quote <cmd>   Send command(s) to server before file transfer (F/SFTP)
     -r/--range <range> Retrieve a byte range from a HTTP/1.1 or FTP server
        --random-file <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 <num>   Retry request <num> times if transient problems occur
        --retry-delay <seconds> When retrying, wait this many seconds between each
        --retry-max-time <seconds> 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 <host[:port]> Use SOCKS4 proxy on given host   port
        --socks5 <host[:port]> Use SOCKS5 proxy on given host   port
        --stderr <file> Where to redirect stderr. - means stdout
     -t/--telnet-option <OPT=val> Set telnet option
        --trace <file>  Write a debug trace to the given file
        --trace-ascii <file> Like --trace but without the hex output
        --trace-time    Add time stamps to trace/verbose output
     -T/--upload-file <file> Transfer <file> to remote site
        --url <URL>     Set URL to work with
     -u/--user <user[:password]> Set server user and password
     -U/--proxy-user <user[:password]> 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 <host[:port]> Use HTTP proxy on given port
     -X/--request <command> 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 <time> Transfer based on a time condition
     -0/--http1.0       Use HTTP 1.0 (H)
     -1/--tlsv1         Use TLSv1 (SSL)
     -2/--sslv2         Use SSLv2 (SSL)
     -3/--sslv3         Use SSLv3 (SSL)
     -4/--ipv4          Resolve name to IPv4 address
     -6/--ipv6          Resolve name to IPv6 address
     -#/--progress-bar  Display transfer progress as a progress bar

  • 相关阅读:
    sql server 中隐藏掉无关数据库
    Web Deploy自动配置
    jQuery form表单序列化为JSON对象!
    CURL HELP
    sql server生成递归日期、连续数据
    MVC项目中,如何访问Views目录下的静态文件!
    DDNS动态更新
    佛祖保佑 永无bug
    asp.net webservice返回json问题
    asp.net使用Get请求webservice
  • 原文地址:https://www.cnblogs.com/wdcwy/p/6882419.html
Copyright © 2020-2023  润新知