当前位置: 首页> 游戏> 单机 > 国内产品设计公司前十名_详情页设计图片_软文范例_推广自己的产品

国内产品设计公司前十名_详情页设计图片_软文范例_推广自己的产品

时间:2025/7/9 14:13:39来源:https://blog.csdn.net/u014161864/article/details/143747933 浏览次数:0次
国内产品设计公司前十名_详情页设计图片_软文范例_推广自己的产品

libcurl.net入门使用

关于libcurl.net

一个引用libcurl.dll并封装为.NET使用的Curl库,方便在.NET应用程序里面执行Curl命令,没有其他库依赖,只是对libcurl.dll的封装和引用。
在大多数情况下,我们可以或者比较容易获取Web请求的Curl格式的请求内容,因此该库可以比较方便地对已知Curl命令进行.NET的程序化转换使用。

安装

因为libcurlx86x64版本,因此libcurl.NET也有两个版本,在Visual StudioNuGet仓库搜索libcurl.NET,然后根据自己的应用选择安装x86x64对应的版本。

使用流程

  1. libcurl库引用初始化,全局的,整个程序只需要调用一次:
Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);
  1. 创建封装的类对象,后续通过该对象执行Curl命令:
var easy = new Easy();
  1. 设置Curl参数,包括地址、请求头、请求参数等,统一使用函数easy.SetOpt,该函数第一个为枚举值的参数类型,第二个参数为对应的参数值:
easy.SetOpt(CURLoption.CURLOPT_USERPWD, UserName + ":" + UserPassword);
easy.SetOpt(CURLoption.CURLOPT_URL, url);
easy.SetOpt(CURLoption.CURLOPT_ENCODING, url);
  1. 执行Curl命令,根据返回代码判定操作结果
var result = easy.Perform();
Log("curl操作完成,结果", pr == CURLcode.CURLE_OK ? "成功" : "失败-" + pr.ToString());
  1. 销毁封装的类对象
easy.Dispose();
  1. 释放清理libcurl库的引用
Curl.GlobalCleanup();

使用示例

bool TryCurlWithUploadFile(string url)
{FileStream fs = null;try{// 读取文件fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read, FileShare.Read);// 需要声明:using SeasideResearch.LibCurlNet;Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);var easy = new Easy();// 设置网址easy.SetOpt(CURLoption.CURLOPT_URL, url);// 设置授权所需的用户名和密码easy.SetOpt(CURLoption.CURLOPT_USERPWD, UserName + ":" + UserPassword);// 上传的文件信息var readFunc = new Easy.ReadFunction(OnReadData);easy.SetOpt(CURLoption.CURLOPT_READFUNCTION, readFunc);easy.SetOpt(CURLoption.CURLOPT_READDATA, fs);easy.SetOpt(CURLoption.CURLOPT_UPLOAD, true);easy.SetOpt(CURLoption.CURLOPT_INFILESIZE, fs.Length);// 可选,显示调试信息var dbgFunc = new Easy.DebugFunction(OnDebug);easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, dbgFunc);easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true);// 可选,显示进度var prgFunc = new Easy.ProgressFunction(OnProgress);easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, dbgFunc);// 设置不校验SSLeasy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 0);easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0);// 执行命令var pr = easy.Perform();if(pr != CURLcode.CURLE_OK){Log("Curl请求失败,原因:", easy.StrError(pr));}else{Log("Curl请求成功");}easy.Dispose();return true;}catch(Exception e){Log("Curl异常:", e.Message);return false;}finally{// 清理fs?.Close();Curl.GlobalCleanup();}
}public Int32 OnReadData(byte[] buf, Int32 size, Int32 nmemb, object ext)
{var fs = (FileStream)ext;return fs.Read(buf, 0, size * nmemb);
}public void OnDebug(CURLINFOTYPE infoType, string message, object extraData)
{if(infoType == CURLINFOTYPE.CURLINFO_DATA_IN && !string.IsNullOrWhiteSpace(message)){Log("Curl<", message);}
}public int OnProgress(object extraData, double dlTotal, double dlNow, double ulTotal, double ulNow)
{Log($"Curl< Progress info: {dlNow}/{dlTotal} {ulNow}/{ulTotal}");return 0;
}
关键字:国内产品设计公司前十名_详情页设计图片_软文范例_推广自己的产品

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: