在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

时间: 2024-11-04 00:23:55

在C#中使用CURL的相关文章

PHP中的CURL函数库

PHP中的CURL函数库(Client URL Library Function) curl_close — 关闭一个curl会话curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数curl_errno — 返回一个包含当前会话错误信息的数字编号curl_error — 返回一个包含当前会话错误信息的字符串curl_exec — 执行一个curl会话curl_getinfo — 获取一个curl连接资源句柄的信息curl_init — 初始化一个curl会话curl_m

在PHP中使用CURL实现GET和POST请求的方法

1.CURL介绍CURL是一个利用URL语法规定来传输文件和数据的工具.支持很多协议,如HTTP.FTP.TELNET等.幸运的是PHP也支持CURL库.本文将介绍curl的一些高级特性,以及在PHP中如何运用它.2.基本结构在学习更为复杂的功能之前,先来看一下在PHP中建立CURL请求的基本步骤:(1)初始化 curl_init()(2)设置变量 curl_setopt() //最为重要,一切玄妙均在此.有一长串curl参数可供设置,它们能指定URL请求的各个细节.要一次性全部看完并理解可能比

Linux系统中的curl命令使用教程

这篇文章主要介绍了Linux系统中的curl命令使用教程,是Linux入门学习中的基础知识,需要的朋友可以参考下. 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.语法:# curl [option] [url]常见参数:-A/--user-agent <string>              设置用户代理发送给服务器-b/--cookie

PHP中的CURL函数库(转载)

使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网 页,然后就可以以程序的方式得到你想要的数据了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内 容,cURL 是一个功能强大的PHP库. PHP中的CURL函数库(Client URL Library Function) curl_close — 关闭一个curl会话 curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数 cu

php 中使用cURL发送get/post请求,上传图片,批处理

cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1 初始化        2 设置选项,包括url        3  执行并获取结果   4 释放curl句柄. 在工作和学习中,我也是时常用的curl.由于在使用curl设置选项时,各种选项比较难以记忆,需要参考,故在此记录下常用的一些例子,以便后来参考. 实例一 : 抓取网页数据(以拉手网开放api为例,也是g

Error【0007】:zabbix中因为curl版本过低而无法发送邮件

1. 错误背景 在centos6.5上,源码部署zabbix最新版本zabbix-3.2.14.部署后之后,在配置邮件发送报警时出错 2. 错误提示 3. 原因分析 从网上检索的结果是说,系统中的curl版本过低,不支持smtp协议.如下图 4. 解决方案 此时需要更新curl 通过wget https://curl.haxx.se/download/curl-7.61.0.tar.gz下载最新版本的curl源码 解压配置编译安装 tar -zxvf curl-7.61.0.tar.gz -C

PHP中使用curl入门教程

curl和libcurl的区别简介 https://www.jb51.net/article/68750.htm curl官网 https://curl.haxx.se/ PHP中使用curl入门教程 https://www.jb51.net/article/68763.htm PHP中使用curl的步骤 在PHP中,可以使用curl完成各种各样的功能,如抓取网页,文件的上传/下载.模拟登录等.但是这些功能的实现都是基于四个步骤完成的,所以curl的使用并不复杂. 使用curl时,主要分为以下四

powershell中调用 curl 的正确方法

学习node.js高级编程一书时,需要用到curl 下载curl并添加到环境变量后,在ps(powershell)中调用curl并输入参数时,始终 提示不对 使用get-help 查询,结果如下: PS C:\Users\sx00x> Get-Help curl 名称 Invoke-WebRequest 语法 Invoke-WebRequest [-Uri] <uri> [<CommonParameters>] 别名 iwr wget curl 原来,curl为 ps 原生命

php中的curl】php中curl的详细解说

本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些: HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证, 下载文件断点续传,上传文件断点续传,htt

在VC中集成cURL

libcurl 库的代码是完全开源的,但是我们一般不会在项目中直接引入它的源代码,而是通过动态链接库隐式链接的方式引入 libcrul 库.也就是说,我们需要在自己的项目中引入 libcrul 相关的三类文件:.lib(导出函数)..dll 和 .h. 要得到这些文件有两种方式: 方式一,也是推荐优先尝试的做法,到官网下载页面上根据自己的项目开发环境,下载对应的已经编译好的 libcurl 库文件: 方式二,还是到官网下载页面上,下载整个 libcurl 库的源代码自行编译,得到需要的文件. 官