Int32 OnWriteStringBuilder(Byte[] buf, Int32 size, Int32 nmemb, Object extraData) { int buf_len = size * nmemb; try { received_length += buf_len; if (encode_type == EncodeType.GZIP) { result_ms.Write(buf, 0, buf_len); result_ms.Position -= buf_len; int count = 0; do { count = gzip.Read(buf2, 0, buf2.Length); result_sb.Append(System.Text.Encoding.UTF8.GetString(buf2, 0, count)); }while (count > 0); } else if (encode_type == EncodeType.DEFLATE) { result_ms.Write(buf, 0, buf_len); result_ms.Position -= buf_len; int count = 0; do { count = deflate.Read(buf2, 0, buf2.Length); result_sb.Append(System.Text.Encoding.UTF8.GetString(buf2, 0, count)); }while (count > 0); } else { result_sb.Append(System.Text.Encoding.UTF8.GetString(buf)); } if (WR.BTC != null) { WR.BTC.BTS.ProgressMax = content_length; WR.BTC.BTS.ProgressValue = received_length; WR.BTC.DisplayStatus(); } if (Config.Web.MaxDownloadedFileLength > 0 && result_sb.Length > Config.Web.MaxDownloadedFileLength ) { easy.Cleanup(); WR.web_routine_status = WebRoutineStatus.FILE_TRUNCATED; WR.log.Write("TRUNCATED."); } } catch (ThreadAbortException) { } catch (Exception error) { WR.log.Error(error); } return(buf_len); }
public static void Main(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); // simple post - with a string easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, "url=index%3Dstripbooks&field-keywords=Topology&Go.x=10&Go.y=10"); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, "Mozilla 4.0 (compatible; MSIE 6.0; Win32"); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); easy.SetOpt(CURLoption.CURLOPT_URL, "http://www.amazon.com/exec/obidos/search-handle-form/002-5928901-6229641"); easy.SetOpt(CURLoption.CURLOPT_POST, true); easy.Perform(); easy.Cleanup(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
public static void Main(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); Easy.SSLContextFunction sf = new Easy.SSLContextFunction(OnSSLContext); easy.SetOpt(CURLoption.CURLOPT_SSL_CTX_FUNCTION, sf); easy.SetOpt(CURLoption.CURLOPT_URL, args[0]); easy.SetOpt(CURLoption.CURLOPT_CAINFO, "ca-bundle.crt"); easy.Perform(); easy.Cleanup(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
public static void Main(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); // <form action="http://mybox/cgi-bin/myscript.cgi // method="post" enctype="multipart/form-data"> MultiPartForm mf = new MultiPartForm(); // <input name="frmUsername"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmUsername", CURLformoption.CURLFORM_COPYCONTENTS, "testtcc", CURLformoption.CURLFORM_END); // <input name="frmPassword"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmPassword", CURLformoption.CURLFORM_COPYCONTENTS, "tcc", CURLformoption.CURLFORM_END); // <input name="frmFileOrigPath"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmFileOrigPath", CURLformoption.CURLFORM_COPYCONTENTS, args[1], CURLformoption.CURLFORM_END); // <input name="frmFileDate"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmFileDate", CURLformoption.CURLFORM_COPYCONTENTS, "08/01/2004", CURLformoption.CURLFORM_END); // <input type="File" name="f1"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "f1", CURLformoption.CURLFORM_FILE, args[1], CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); Easy easy = new Easy(); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); easy.SetOpt(CURLoption.CURLOPT_URL, args[0]); easy.SetOpt(CURLoption.CURLOPT_HTTPPOST, mf); easy.Perform(); easy.Cleanup(); mf.Free(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
public void ThreadFunc() { Easy easy = new Easy(); easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_WRITEDATA, url); easy.SetOpt(CURLoption.CURLOPT_SHARE, share); easy.Perform(); easy.Cleanup(); }
static void Main(string[] args) { Console.WriteLine("libcurlFtpsExample..."); const string url = "ftp://*****:*****@ftp.somesite.com/dir/"; try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); if (easy != null) { easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, false); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, false); easy.SetOpt(CURLoption.CURLOPT_FTP_SSL, CURLftpSSL.CURLFTPSSL_TRY); // For debugging will print headers to console. Easy.HeaderFunction hf = new Easy.HeaderFunction(OnHeaderData); easy.SetOpt(CURLoption.CURLOPT_HEADERFUNCTION, hf); // For debugging will print received data to console. Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); // List directory only easy.SetOpt(CURLoption.CURLOPT_FTPLISTONLY, true); CURLcode code = easy.Perform(); if (code != CURLcode.CURLE_OK) { Console.WriteLine("Request failed!"); } easy.Cleanup(); } else { Console.WriteLine("Failed to get Easy libcurl handle!"); } } catch (Exception exp) { Console.WriteLine(exp); } finally { Curl.GlobalCleanup(); } }
private static void Main(string[] args) { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.WriteFunction wf = MyWriteFunction; easy.SetOpt(CURLoption.CURLOPT_URL, "http://google.com/index.html"); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.Perform(); easy.Cleanup(); Console.WriteLine("Press any key..."); Console.ReadKey(); }
public static Int64 GetUrlFileSizeEx(string url, string hostname, int timeout) { long size = -1; Easy easy = new Easy(); Easy.SetCurrentEasy(easy); Slist headers = new Slist(); headers.Append(HobaText.Format("Host: {0}", hostname)); easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_HEADER, 1L); easy.SetOpt(CURLoption.CURLOPT_NOBODY, 1L); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headers); //easy.SetOpt(CURLoption.CURLOPT_IPRESOLVE, (long)CURLipResolve.CURL_IPRESOLVE_V4); easy.SetOpt(CURLoption.CURLOPT_CONNECTTIMEOUT, timeout / 1000); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0L); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 0L); int error = 0; double downloadFileLength = 0.0f; if (easy.Perform() == CURLcode.CURLE_OK) { CURLcode code = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref error); if (code == CURLcode.CURLE_OK && error == 200) { easy.GetInfo(CURLINFO.CURLINFO_CONTENT_LENGTH_DOWNLOAD, ref downloadFileLength); } if (downloadFileLength >= 0.0f) { size = (int)downloadFileLength; } } else { size = -1; } headers.FreeAll(); Easy.SetCurrentEasy(null); easy.Cleanup(); return(size); }
public string HTTPPost(string URL, string http_headers, string Content) { easy = new Easy(); SockBuff = ""; String proxy; try { Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); easy.SetOpt(CURLoption.CURLOPT_URL, URL); easy.SetOpt(CURLoption.CURLOPT_TIMEOUT, "60"); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, UserAgent); easy.SetOpt(CURLoption.CURLOPT_COOKIEFILE, CookieFile); easy.SetOpt(CURLoption.CURLOPT_COOKIEJAR, CookieFile); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, http_headers); easy.SetOpt(CURLoption.CURLOPT_REFERER, referer); //easy.SetOpt(CURLoption.CURLOPT_POSTFIELDSIZE, Content.Length); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); easy.SetOpt(CURLoption.CURLOPT_STDERR, "test.txt"); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, 1); easy.SetOpt(CURLoption.CURLOPT_POST, true); easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, Content); if (URL.Contains("https")) { easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 1); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0); } if (Proxy != "") { easy.SetOpt(CURLoption.CURLOPT_PROXY, Proxy); easy.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_HTTP); } easy.Perform(); easy.Cleanup(); } catch { } return(SockBuff); }
public MemoryStream LoadBinary(string uri, string method = "GET", string postData = "", List <string> headers = null) { ms = new MemoryStream(); Easy easy = new Easy(); Easy.WriteFunction wf = MyWriteBinaryFunction; easy.SetOpt(CURLoption.CURLOPT_URL, uri); easy.SetOpt(CURLoption.CURLOPT_HEADER, false); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); Slist headerSlist = new Slist(); if (headers != null) { foreach (var header in headers) { headerSlist.Append(header); } } easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headerSlist); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, false); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, false); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, UserAgent); easy.SetOpt(CURLoption.CURLOPT_TIMEOUT, 10); easy.SetOpt(CURLoption.CURLOPT_CONNECTTIMEOUT, 3); if (!string.IsNullOrEmpty(postData)) { easy.SetOpt(CURLoption.CURLOPT_POST, true); easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, postData); } easy.SetOpt(CURLoption.CURLOPT_COOKIEFILE, CookieFile); easy.SetOpt(CURLoption.CURLOPT_COOKIEJAR, CookieFile); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.Perform(); int code = 0; easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref code); easy.Cleanup(); return(ms); }
public bool DownloadStaticURL(string url, string OutputFilename) { string path = Path.GetDirectoryName(OutputFilename); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } try { _fileStream = new FileStream(OutputFilename, FileMode.Create); //Todo: move Curl.GlobalInit out, just invoke once. Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); Easy.ProgressFunction pf = new Easy.ProgressFunction(ProgressFunction); easy.SetOpt(CURLoption.CURLOPT_NOPROGRESS, false); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); if (!string.IsNullOrEmpty(url)) { easy.SetOpt(CURLoption.CURLOPT_URL, url); } easy.Perform(); easy.Cleanup(); Curl.GlobalCleanup(); _fileStream.Close(); } catch (Exception ex) { Debug.WriteLine(ex.Message); Debug.WriteLine(ex.StackTrace); _fileStream.Close(); return(false); } return(true); }
static void Main(string[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); if (args.Length > 1) { easy.SetOpt(CURLoption.CURLOPT_URL, args[0]); } else { string url = string.Empty; Console.WriteLine("Download URL: "); url = "http://jashliao.pixnet.net/blog";//Console.ReadLine(); easy.SetOpt(CURLoption.CURLOPT_URL, url); } easy.SetOpt(CURLoption.CURLOPT_VERBOSE, 1); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_NOPROGRESS, 1); string path = string.Empty; Console.WriteLine("Save Path: "); path = "123.html";//Console.ReadLine(); Program.bw = new BinaryWriter(new FileStream(path, FileMode.Create)); easy.Perform(); easy.Cleanup(); Program.bw.Close(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
public static void Main(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.HeaderFunction hf = new Easy.HeaderFunction(OnHeaderData); easy.SetOpt(CURLoption.CURLOPT_URL, args[0]); easy.SetOpt(CURLoption.CURLOPT_HEADERFUNCTION, hf); easy.Perform(); easy.Cleanup(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
public string HTTPGet(string URL, string Proxy) { easy = new Easy(); SockBuff = ""; try { Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); easy.SetOpt(CURLoption.CURLOPT_URL, URL); easy.SetOpt(CURLoption.CURLOPT_TIMEOUT, "60"); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, UserAgent); easy.SetOpt(CURLoption.CURLOPT_COOKIEFILE, CookieFile); easy.SetOpt(CURLoption.CURLOPT_COOKIEJAR, CookieFile); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); if (URL.Contains("https")) { easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 1); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0); } if (Proxy != "") { easy.SetOpt(CURLoption.CURLOPT_PROXY, Proxy); easy.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_HTTP); } easy.Perform(); easy.Cleanup(); } catch { Console.WriteLine("Get Request Error"); } return(SockBuff); }
public static string GetUrlContentType(string url, string hostname, int timeout) { Easy easy = new Easy(); Easy.SetCurrentEasy(easy); Slist headers = new Slist(); headers.Append(HobaText.Format("Host: {0}", hostname)); easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_HEADER, 1L); easy.SetOpt(CURLoption.CURLOPT_NOBODY, 1L); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headers); //easy.SetOpt(CURLoption.CURLOPT_IPRESOLVE, (long)CURLipResolve.CURL_IPRESOLVE_V4); easy.SetOpt(CURLoption.CURLOPT_CONNECTTIMEOUT, timeout / 1000); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0L); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 0L); int error = 0; string contentType = ""; if (easy.Perform() == CURLcode.CURLE_OK) { CURLcode code = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref error); if (code == CURLcode.CURLE_OK && error == 200) { easy.GetInfo(CURLINFO.CURLINFO_CONTENT_TYPE, ref contentType); } } headers.FreeAll(); Easy.SetCurrentEasy(null); easy.Cleanup(); return(contentType); }
public static void Main(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); FileStream fs = new FileStream(args[0], FileMode.Open, FileAccess.Read, FileShare.Read); Easy easy = new Easy(); Easy.ReadFunction rf = new Easy.ReadFunction(OnReadData); easy.SetOpt(CURLoption.CURLOPT_READFUNCTION, rf); easy.SetOpt(CURLoption.CURLOPT_READDATA, fs); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); easy.SetOpt(CURLoption.CURLOPT_URL, args[1]); easy.SetOpt(CURLoption.CURLOPT_USERPWD, args[2] + ":" + args[3]); easy.SetOpt(CURLoption.CURLOPT_UPLOAD, true); easy.SetOpt(CURLoption.CURLOPT_INFILESIZE, fs.Length); easy.Perform(); easy.Cleanup(); fs.Close(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
public static void PerformPostMultipartRequest(string query, string postData) { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); // simple post - with a string easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, postData); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, "C# EchoNest Lib"); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); easy.SetOpt(CURLoption.CURLOPT_URL, query); easy.SetOpt(CURLoption.CURLOPT_POST, true); CURLcode res = easy.Perform(); if (res != CURLcode.CURLE_OK) { throw new WebException("Post operation failed"); } easy.Cleanup(); Curl.GlobalCleanup(); }
public static bool gomultipartpost(string url, string user, string password, string fname, string fpath, int ticketid, int maxwaitsec, bool showprogress, TradeLink.API.DebugDelegate deb, out string result) { debs = deb; Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); rresult = new StringBuilder(); hasresult = false; MultiPartForm mf = new MultiPartForm(); // <input name="frmFileOrigPath"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "document[name]", CURLformoption.CURLFORM_COPYCONTENTS, fname, CURLformoption.CURLFORM_END); // <input type="File" name="f1"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "document[file]", CURLformoption.CURLFORM_FILE, fpath, CURLformoption.CURLFORM_CONTENTTYPE, "application/octet-stream", CURLformoption.CURLFORM_END); // <input name="frmFileDate"> if (ticketid != 0) { mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "document[ticket_id]", CURLformoption.CURLFORM_COPYCONTENTS, ticketid.ToString(), CURLformoption.CURLFORM_END); } if (showprogress) { Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); } Easy.WriteFunction wf = new Easy.WriteFunction(OnWritePostData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_HTTPPOST, mf); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); // simple post - with a string //easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS,data); Slist sl = new Slist(); //sl.Append("Content-Type:multipart/form-data"); sl.Append("Accept: application/xml"); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, sl); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, false); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, "Mozilla 4.0 (compatible; MSIE 6.0; Win32"); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); easy.SetOpt(CURLoption.CURLOPT_USERPWD, user + ":" + password); CURLhttpAuth authflag = CURLhttpAuth.CURLAUTH_BASIC; easy.SetOpt(CURLoption.CURLOPT_HTTPAUTH, authflag); easy.SetOpt(CURLoption.CURLOPT_URL, url); //easy.SetOpt(CURLoption.CURLOPT_POST, true); if (debs != null) { easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); } CURLcode err = easy.Perform(); int waits = 0; int maxwaits = 100 * maxwaitsec; while (!hasresult && (waits++ < maxwaits)) { System.Threading.Thread.Sleep(10); } int rcodei = 0; CURLcode rcode = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref rcodei); if (!hasresult && (deb != null)) { deb(easy.StrError(err)); } easy.Cleanup(); mf.Free(); Curl.GlobalCleanup(); result = rresult.ToString(); return(hasresult && (rcodei == 201)); }
public static void Main(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData); Easy easy1 = new Easy(); String s1 = (String)args[0].Clone(); easy1.SetOpt(CURLoption.CURLOPT_URL, args[0]); easy1.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy1.SetOpt(CURLoption.CURLOPT_WRITEDATA, s1); Easy easy2 = new Easy(); String s2 = (String)args[1].Clone(); easy2.SetOpt(CURLoption.CURLOPT_URL, args[1]); easy2.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy2.SetOpt(CURLoption.CURLOPT_WRITEDATA, s2); Multi multi = new Multi(); multi.AddHandle(easy1); multi.AddHandle(easy2); int stillRunning = 1; // call Multi.Perform right away (note ref qualifier) while (multi.Perform(ref stillRunning) == CURLMcode.CURLM_CALL_MULTI_PERFORM) { ; } while (stillRunning != 0) { multi.FDSet(); int rc = multi.Select(1000); // one second switch (rc) { case -1: Console.WriteLine("Multi.Select() returned -1"); stillRunning = 0; break; case 0: default: { while (multi.Perform(ref stillRunning) == CURLMcode.CURLM_CALL_MULTI_PERFORM) { ; } break; } } } // various cleanups multi.Cleanup(); easy1.Cleanup(); easy2.Cleanup(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
/// <summary> /// Universal method to load page /// </summary> /// <param name="url">url to load. It is ignored if form is not null.</param> /// <param name="form">form to submit. Should be null if url is not null.</param> /// <param name="send_cookies"></param> /// <returns></returns> CURLcode load_page(string url, bool send_cookies) { try { if (Cache.GetCachedFile(ref url, out WR.HtmlResult, out WR.ResponseUrl)) { WR.web_routine_status = WebRoutineStatus.CACHED; WR.log.Write("From cache: " + url); return(CURLcode.CURLE_OK); } if (UseCommonCookieFile) { copy_common_cookie_file2thread_cookie_file(); } result_ms.Position = 0; result_sb.Length = 0; encode_type = EncodeType.NONE; easy = new Easy(); content_length = -1; WR.ErrorMessage = null; WR.HtmlResult = null; //WR.saved_file = null; WR.log.Write("Downloading:" + url); if (WR.BTC != null) { WR.BTC.BTS.ProgressMax = 0; WR.BTC.BTS.ProgressValue = 100; WR.BTC.BTS.Status = "Sleeping Crawl Interval: " + Config.Web.CrawlTimeIntervalInMss.ToString(); WR.BTC.DisplayStatus(); Thread.Sleep(Config.Web.CrawlTimeIntervalInMss); WR.BTC.BTS.Status = "URL:" + url; WR.BTC.DisplayStatus(); } WR.web_routine_status = WebRoutineStatus.UNDEFINED; //if (flagReceiveDebugMessages) //{ // Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); // easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); // easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); //} Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteStringBuilder); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_URL, url); if (url.StartsWith("https")) { easy.SetOpt(CURLoption.CURLOPT_CAINFO, "ca-bundle.crt"); } Easy.HeaderFunction hf = new Easy.HeaderFunction(OnHeaderData); easy.SetOpt(CURLoption.CURLOPT_HEADERFUNCTION, hf); Slist sl = new Slist(); sl.Append("Accept: " + WR.HttpRequestAcceptHeader); sl.Append("Referer: " + WR.HttpRequestRefererHeader); sl.Append("Accept-Encoding: gzip, deflate"); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, sl); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, Config.Web.HttpUserAgent); easy.SetOpt(CURLoption.CURLOPT_COOKIEJAR, CookieFile); if (send_cookies) { easy.SetOpt(CURLoption.CURLOPT_COOKIEFILE, CookieFile); } if (WR.MaxAutoRedirectionCount >= 0) { easy.SetOpt(CURLoption.CURLOPT_MAXREDIRS, WR.MaxAutoRedirectionCount); } //Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); //easy.SetOpt(CURLoption.CURLOPT_PROGRESSDATA, ); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); if (proxy != null) { easy.SetOpt(CURLoption.CURLOPT_PROXY, proxy.Ip); easy.SetOpt(CURLoption.CURLOPT_PROXYPORT, proxy.Port); easy.SetOpt(CURLoption.CURLOPT_PROXYAUTH, CURLhttpAuth.CURLAUTH_ANY); if (proxy.Login != "" || proxy.Password != "") { easy.SetOpt(CURLoption.CURLOPT_PROXYUSERPWD, proxy.Login + ":" + proxy.Password); } if (proxy.Type == ProxyType.SOCKS5) { easy.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_SOCKS5); } else if (proxy.Type == ProxyType.SOCKS4) { easy.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_SOCKS4); } else { easy.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_HTTP); } easy.SetOpt(CURLoption.CURLOPT_PROXYAUTH, CURLhttpAuth.CURLAUTH_ANY); } if (WR.BTC != null) { if (proxy != null) { WR.BTC.BTS.Proxy = proxy.Ip + ":" + proxy.Port; } else { WR.BTC.BTS.Proxy = "NOT USED"; } WR.BTC.DisplayStatus(); } easy.SetOpt(CURLoption.CURLOPT_TIMEOUT, Config.Web.HttpRequestTimeoutInSeconds); CURLcode rc = easy.Perform(); easy.GetInfo(CURLINFO.CURLINFO_EFFECTIVE_URL, ref WR.ResponseUrl); easy.Cleanup(); WR.HtmlResult = result_sb.ToString(); if (rc != CURLcode.CURLE_OK) { WR.ErrorMessage = easy.StrError(rc); WR.web_routine_status = WebRoutineStatus.DOWNLOAD_ERROR; WR.log.Error("Download error: " + WR.ErrorMessage + "\nURL:" + url + "\nPROXY: " + proxy.Ip + ":" + proxy.Port); return(rc); } if (UseCommonCookieFile) { copy_thread_cookie_file2common_cookie_file(); } if (WR.web_routine_status == WebRoutineStatus.UNDEFINED) { WR.web_routine_status = WebRoutineStatus.OK; } WR.log.CacheDownloadedString(ref url, ref WR.ResponseUrl, ref WR.HtmlResult, WR.page_number++, WR.CycleIdentifier); return(rc); } catch (ThreadAbortException) { } catch (Exception error) { WR.web_routine_status = WebRoutineStatus.EXCEPTION; WR.log.Error(error.Message + "\nURL: " + url + "\nPROXY: " + proxy.Ip + ":" + proxy.Port); if (easy != null) { easy.Cleanup(); } } return(CURLcode.CURLE_FAILED_INIT); }
public bool DoDownload(string url, string hostname, string destFileName, int timeout, long bufferSize, WRITE_DATA_DELEGATE onWriteData, Object extraData) { bool ret = false; Easy easy = new Easy(); Easy.SetCurrentEasy(easy); Slist headers = new Slist(); Easy.WriteFunction wf = new Easy.WriteFunction(onWriteData); CURLcode curlCode = CURLcode.CURLE_OK; try { headers.Append(HobaText.Format("Host: {0}", hostname)); easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_WRITEDATA, extraData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_HEADER, 0L); easy.SetOpt(CURLoption.CURLOPT_VERBOSE, 0L); easy.SetOpt(CURLoption.CURLOPT_BUFFERSIZE, (long)bufferSize); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headers); //easy.SetOpt(CURLoption.CURLOPT_IPRESOLVE, (long)CURLipResolve.CURL_IPRESOLVE_V4); easy.SetOpt(CURLoption.CURLOPT_CONNECTTIMEOUT, timeout / 1000); // easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0L); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 0L); if (StartPoint > 0) { easy.SetOpt(CURLoption.CURLOPT_RESUME_FROM, StartPoint); } int error = 0; curlCode = easy.Perform(); if (curlCode == CURLcode.CURLE_OK) { CURLcode code = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref error); if (code == CURLcode.CURLE_OK && error == 200) { ret = true; } } } finally { headers.FreeAll(); Easy.SetCurrentEasy(null); easy.Cleanup(); } if (curlCode != CURLcode.CURLE_OK) { throw new WebException(String.Format( "Error downloading \"{0}\": {1}", url, curlCode)); } return(ret); }
public string GetPostPage(string url, string postData, string proxyPort, string userPassword, bool deleteCookies = true) { lock (thisLock){ if (deleteCookies) { DeleteCookies(); } Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); try { this.CurrentPage = string.Empty; Easy.WriteFunction wf = this.WriteData; easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 0); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0); if (!string.IsNullOrEmpty(proxyPort)) { easy.SetOpt(CURLoption.CURLOPT_PROXY, proxyPort); } if (!string.IsNullOrEmpty(userPassword)) { easy.SetOpt(CURLoption.CURLOPT_PROXYUSERPWD, userPassword); } if (!string.IsNullOrEmpty(proxyPort)) { easy.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_SOCKS5); } easy.SetOpt(CURLoption.CURLOPT_USERAGENT, UserAgent); easy.SetOpt(CURLoption.CURLOPT_COOKIEFILE, "injector.cookie"); easy.SetOpt(CURLoption.CURLOPT_COOKIEJAR, "injector.cookie"); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, 1); easy.SetOpt(CURLoption.CURLOPT_AUTOREFERER, 1); easy.SetOpt(CURLoption.CURLOPT_CONNECTTIMEOUT, 15); if (!string.IsNullOrEmpty(postData)) { easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, postData); } easy.Perform(); return(this.CurrentPage); } catch (Exception exp) { if (exp is ThreadAbortException) { this.CurrentPage = string.Empty; } Cache.Instance.Log("[GetPostPage] Exception " + exp.ToString()); } finally { if (easy != null) { easy.Cleanup(); } Curl.GlobalCleanup(); } return(this.CurrentPage = string.Empty); } }
public long GetFileSize(string url, string hostName, int timeout, ref string modifiedTimeGMT) { long size = -1; modifiedTimeGMT = ""; Easy easy = new Easy(); Easy.SetCurrentEasy(easy); Slist headers = new Slist(); CURLcode curlCode = CURLcode.CURLE_OK; try { headers.Append(HobaText.Format("Host: {0}", hostName)); easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_FILETIME, 1L); easy.SetOpt(CURLoption.CURLOPT_HEADER, 1L); easy.SetOpt(CURLoption.CURLOPT_NOBODY, 1L); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headers); easy.SetOpt(CURLoption.CURLOPT_CONNECTTIMEOUT, timeout / 1000); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0L); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, 0L); int error = 0; double downloadFileLength = -1.0f; curlCode = easy.Perform(); if (curlCode == CURLcode.CURLE_OK) { CURLcode code = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref error); if (code == CURLcode.CURLE_OK && error == 200) { easy.GetInfo(CURLINFO.CURLINFO_CONTENT_LENGTH_DOWNLOAD, ref downloadFileLength); DateTime time = new DateTime(); code = easy.GetInfo(CURLINFO.CURLINFO_FILETIME, ref time); if (code == CURLcode.CURLE_OK) { modifiedTimeGMT = time.ToUniversalTime().ToString("R"); } } if (downloadFileLength >= 0.0f) { size = (int)downloadFileLength; } } else { size = -1; } } finally { headers.FreeAll(); Easy.SetCurrentEasy(null); easy.Cleanup(); } if (curlCode != CURLcode.CURLE_OK) { throw new ArgumentException(String.Format( "Error downloading \"{0}\": {1}", url, curlCode)); } return(size); }
public static void Main(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); easy.SetOpt(CURLoption.CURLOPT_URL, args[0]); easy.SetOpt(CURLoption.CURLOPT_PRIVATE, "Private string"); easy.SetOpt(CURLoption.CURLOPT_FILETIME, true); easy.Perform(); // now, exercise the various GetInfo stuff double d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_CONNECT_TIME, ref d); Console.WriteLine("Connect Time: {0}", d); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_CONTENT_LENGTH_DOWNLOAD, ref d); Console.WriteLine("Content Length (Download): {0}", d); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_CONTENT_LENGTH_UPLOAD, ref d); Console.WriteLine("Content Length (Upload): {0}", d); string s = null; easy.GetInfo(CURLINFO.CURLINFO_CONTENT_TYPE, ref s); Console.WriteLine("Content Type: {0}", s); DateTime dt = new DateTime(0); easy.GetInfo(CURLINFO.CURLINFO_FILETIME, ref dt); Console.WriteLine("File time: {0}", dt); int n = 0; easy.GetInfo(CURLINFO.CURLINFO_HEADER_SIZE, ref n); Console.WriteLine("Header Size: {0}", n); n = 0; easy.GetInfo(CURLINFO.CURLINFO_HTTPAUTH_AVAIL, ref n); Console.WriteLine("Authentication Bitmask: {0}", n); n = 0; easy.GetInfo(CURLINFO.CURLINFO_HTTP_CONNECTCODE, ref n); Console.WriteLine("HTTP Connect Code: {0}", n); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_NAMELOOKUP_TIME, ref d); Console.WriteLine("Name Lookup Time: {0}", d); n = 0; easy.GetInfo(CURLINFO.CURLINFO_OS_ERRNO, ref n); Console.WriteLine("OS Errno: {0}", n); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_PRETRANSFER_TIME, ref d); Console.WriteLine("Pretransfer time: {0}", d); object o = null; easy.GetInfo(CURLINFO.CURLINFO_PRIVATE, ref o); Console.WriteLine("Private Data: {0}", o); n = 0; easy.GetInfo(CURLINFO.CURLINFO_PROXYAUTH_AVAIL, ref n); Console.WriteLine("Proxy Authentication Schemes: {0}", n); n = 0; easy.GetInfo(CURLINFO.CURLINFO_REDIRECT_COUNT, ref n); Console.WriteLine("Redirect count: {0}", n); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_REDIRECT_TIME, ref d); Console.WriteLine("Redirect time: {0}", d); n = 0; easy.GetInfo(CURLINFO.CURLINFO_REQUEST_SIZE, ref n); Console.WriteLine("Request size: {0}", n); n = 0; easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref n); Console.WriteLine("Response code: {0}", n); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_SIZE_DOWNLOAD, ref d); Console.WriteLine("Download size: {0}", d); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_SIZE_UPLOAD, ref d); Console.WriteLine("Upload size: {0}", d); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_SPEED_DOWNLOAD, ref d); Console.WriteLine("Download speed: {0}", d); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_SPEED_UPLOAD, ref d); Console.WriteLine("Upload speed: {0}", d); n = 0; easy.GetInfo(CURLINFO.CURLINFO_SSL_VERIFYRESULT, ref n); Console.WriteLine("SSL verification result: {0}", n); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_STARTTRANSFER_TIME, ref d); Console.WriteLine("Start transfer time: {0}", d); d = 0.0; easy.GetInfo(CURLINFO.CURLINFO_TOTAL_TIME, ref d); Console.WriteLine("Total time: {0}", d); easy.Cleanup(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
public void postFile(string imgpath, string bigimgpath) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); // <form action="http://mybox/cgi-bin/myscript.cgi // method="post" enctype="multipart/form-data"> MultiPartForm mf = new MultiPartForm(); // <input name="frmUsername"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "filecode", CURLformoption.CURLFORM_COPYCONTENTS, this.fcode, CURLformoption.CURLFORM_END); // <input type="File" name="f1"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "file", CURLformoption.CURLFORM_FILE, this.file_out, CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "img", CURLformoption.CURLFORM_FILE, imgpath, CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "bigimg", CURLformoption.CURLFORM_FILE, bigimgpath, CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); Easy easy = new Easy(); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); easy.SetOpt(CURLoption.CURLOPT_URL, this.weburl); easy.SetOpt(CURLoption.CURLOPT_HTTPPOST, mf); easy.Perform(); easy.Cleanup(); mf.Free(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); FileStream fs1 = new FileStream("D:\\test\\1.txt", FileMode.OpenOrCreate); StreamWriter sw1 = new StreamWriter(fs1); sw1.Write(ex.ToString()); sw1.Close(); fs1.Close(); } FileStream fs = new FileStream("D:\\test\\A.txt", FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fs); sw.Write("aaaa "); sw.Close(); fs.Close(); }
public string Load(string uri, string method = "GET", string postData = "", List <string> headers = null) { sb.Clear(); Easy easy = new Easy(); Easy.WriteFunction wf = MyWriteFunction; easy.SetOpt(CURLoption.CURLOPT_URL, uri); easy.SetOpt(CURLoption.CURLOPT_HEADER, DisplayHeaders); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, FollowRedirects); Slist headerSlist = new Slist(); if (headers != null) { foreach (var header in headers) { headerSlist.Append(header); } } easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headerSlist); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, false); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYHOST, false); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, UserAgent); easy.SetOpt(CURLoption.CURLOPT_TIMEOUT, 10); easy.SetOpt(CURLoption.CURLOPT_CONNECTTIMEOUT, 3); if (!string.IsNullOrEmpty(postData)) { easy.SetOpt(CURLoption.CURLOPT_POST, true); easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, postData); } if (method.Equals("POST")) { easy.SetOpt(CURLoption.CURLOPT_POST, true); } easy.SetOpt(CURLoption.CURLOPT_COOKIEFILE, CookieFile); easy.SetOpt(CURLoption.CURLOPT_COOKIEJAR, CookieFile); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.Perform(); int code = 0; easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref code); easy.Cleanup(); //Console.WriteLine(code); if (code == 302) { RedirectUrl = FindString(sb.ToString(), "Location:(.*?)\n"); //Console.WriteLine(RedirectUrl); } string page = sb.ToString(); page = page.Replace("\r\n", ""); // strip all new lines and tabs page = page.Replace("\r", ""); // strip all new lines and tabs page = page.Replace("\n", ""); // strip all new lines and tabs page = page.Replace("\t", ""); // strip all new lines and tabs page = Regex.Replace(page, @">\s+<", "><"); return(page); }
public static bool gopost(string url, string user, string password, string data, TradeLink.API.DebugDelegate deb, out string result) { debs = deb; Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); rresult = new StringBuilder(); hasresult = false; Easy.WriteFunction wf = new Easy.WriteFunction(OnWritePostData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); // simple post - with a string easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS, data); Slist sl = new Slist(); sl.Append("Content-Type:application/xml"); sl.Append("Accept: application/xml"); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, sl); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, false); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, "Mozilla 4.0 (compatible; MSIE 6.0; Win32"); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); easy.SetOpt(CURLoption.CURLOPT_USERPWD, user + ":" + password); CURLhttpAuth authflag = CURLhttpAuth.CURLAUTH_BASIC; easy.SetOpt(CURLoption.CURLOPT_HTTPAUTH, authflag); easy.SetOpt(CURLoption.CURLOPT_URL, url); easy.SetOpt(CURLoption.CURLOPT_POST, true); if (debs != null) { easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); } CURLcode err = easy.Perform(); int waits = 0; int maxwaits = 200; while (!hasresult && (waits++ < maxwaits)) { System.Threading.Thread.Sleep(10); } int rcodei = 0; CURLcode rcode = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref rcodei); if (!hasresult && (deb != null)) { deb(easy.StrError(err)); } easy.Cleanup(); Curl.GlobalCleanup(); result = rresult.ToString(); return(hasresult); }