如何获得一个快速的.Net Http请求
我需要一个可以在.NET中使用的http请求,该请求的需求低于100毫秒.我能够在浏览器中实现这一目标,所以我真的不明白为什么这是一个问题. 我已经尝试了winhttp和webrequest.create.create.它们都超过500ms,这对于我的用例不可接受. 这是我要通过的简单测试的示例. (winhttpfetcher是我写的一个简单的包装器,但它做了我不确定它是否值得粘贴的最琐碎的示例.) 我会从libcurlnet获得可接受的结果,但是如果同一班级使用访问访问范围.另外,由于它不是管理代码,并且必须复制到BIN目录,因此与我的开源项目一起部署并不理想. 其他尝试尝试的想法? [Test] public void WinHttp_Should_Get_Html_Quickly() { var fetcher = new WinHttpFetcher(); var startTime = Da
0 2024-04-18
编程技术问答社区
为什么我的任务没有取消?
我正在运行一个过程,该过程会定期卷曲到一个URL列表中,以测试这些网站的性能.我的主要程序基本上是一个do ...睡眠...而循环调用函数,每n秒runtest()每秒钟,键盘中断以杀死它.根据基础知识,我的代码如下: public void runTest() { if(isRunning) { return; //Plus some logging that one or more of the tests hasn't completed } try { isRunning = true; Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); CancellationTokenSource cts = new CancellationTokenSource(httpTimeoutValueMs * 2); foreach (var ur
0 2024-04-16
编程技术问答社区
来自C#的服务器名称指示
据我所知,.NET似乎有一个很大的限制,因为无法使用C#和.NET进行使用服务器名称指示(SNI)的TLS连接.我错过了什么还是我的理解正确? 有人知道是否以及如何使用openssl.net,libcurl.net或其他一些第三方.NET库进行SNI连接?一些示例代码将不胜感激. 解决方案 在我的.NET 4.5项目中,使用SNI的服务器以下失败: var url = "https://www.somesite.com"; System.Net.WebClient client = new System.Net.WebClient(); client.Encoding = Encoding.UTF8; var data = client.DownloadString(url); ,如果通过以下方式将其前缀明确指定TLS1.2,则可以使用: System.Net.ServicePointManager.SecurityProtocol = SecurityPr
0 2024-04-12
编程技术问答社区
检查认证后,在tuxedo上使用libcurl时停止。
我正在尝试使用libcurl调用REST API. 我的服务器env:Oracle Tuxedo(Pro *c),AIX 7.1 它确实在提示上使用命令" curl"来工作. 我还可以使用详细选项看到整个日志. ,但是当我尝试将其用于libcurl的客户端编译时,它一直在停止. 根据日志. 它说… 尝试123.456.789.00:443… 连接到" API URL"(123.456.789.00)端口443(#0) ALPN,提供HTTP/1.1 Cipher选择:ALL:!export:!export40:!e​​xport56:!anull:!low:!rc4:@strength 成功设置证书验证位置: cafile:/var/ssl/cert.pem capath:/var/ssl/certs/ 它停在这里!!!! 当我在提示上使用curl命令时 它说完全一样 但是继续前进…… TLSV1.2(OUT),TLS标题
0 2024-04-10
编程技术问答社区
libcurl的内部连接管理和DNS ttl
libcurl缓存连接,并将它们重新以连续请求. 假设我有4个连接到example.com,我需要建立第五连接. Libcurl将尝试建立与example.com的新连接. 如果在创建第5个连接时,将为example.com dns结果到期,将会发生什么?我想libcurl不会缓存DNS结果,而只是查询OS解析器(我不使用ARES),如果在高速缓存中example.com到期,将提出新的DNS请求. 现在,我们假设将原始4请求example.com解决,因为请求1.1.1.1和第5请求以5.5.5.5. 解决. libcurl中的内部连接缓存会发生什么? libcurl是否"扔掉"并将连接到1.1.1.1完成时,这4个请求完成? 如果我也有对something.com的请求,该请求也解决了1.1.1.1 ip? 如果重要的话,我使用卷曲mutli接口. 解决方案 卷曲具有其自己的内部DNS缓存,默认情况下将缓存解决地址60秒(您可以更改).因此,随后的同名解析将在该
0 2024-04-10
编程技术问答社区
C语言中Curl_multi_perform()的工作实例
我花了几个小时尝试弄清楚如何以一种一般的方式实现curl_multi_perforf().这个示例可能会帮助他人. 它基本上将结构对象带入一个curl输出作为字符串.然后,程序员可以采用该字符串并执行他们喜欢的任何处理.如果有人有任何改进,等等,我会很高兴看到他们. 这是带有结构和功能原型的名为" Multicurl.h"的标头文件. #ifndef _MULTICURL_HEADER_H #define _MULTICURL_HEADER_H #include #include #include #include // A data structure used to hold the result of the cURL request. typedef struct{ size_t size; char *memory; } MemType; //
2 2024-04-10
编程技术问答社区
使用curl中的UTF-8数据流,何时将数据流从UTF-8转换为ASCII?
使用Curl将字符流从Internet上删除时,数据流从多键数据类型转换为单个字节字符数组? 我写了一个程序在这里似乎可以使用回调功能中的ASCII. 但是,我编写了另一个使用WCHAR_T数据类型的UTF-8的程序,该程序似乎也起作用.即使WCHAR_T类型在我的计算机上为4个字节,并且char为1个字节. . 我猜想对此程序有某种类型的转换,但是我不知道(我认为在UTF-8 ASCII字符中仍然需要1个字节,但是当程序使用WCHAR_T时数据类型的系统板带有ZEROS的常规ASCII字符将其转换为4个字节,但这不是程序员实现的内容...). #include "multicurl.h" #define MAX_WAIT_MSECS 5*1000 /* Wait max. 5 seconds */ /* The largest difference between the ASCII and UTF-8 variations of this program
2 2024-04-10
编程技术问答社区
当服务器发送关闭信号时,使用libcurl关闭websocket连接
我不是高级用户,所以请与我应对. 我正在尝试使用libcurl实现Websocket客户端,直到连接的最后一步 - 终止. . 一般逻辑如下: 客户端连接并发送升级请求. WebSocket服务器接受/升级并开始发送Gibberish. 客户量增加了所有的gibberish尺寸. 服务器在10秒后发送关闭信号. 到目前为止一切都很好.我不处理传入消息的有效载荷,我不想.我的资源非常有限,我不想经历任何性能损失以检查每个有效载荷并搜索关闭信号. 我正在使用libcurl的easy接口,并使用curl_easy_perform()接收数据.有什么方法可以检测关闭信号,或在10秒后关闭Websocket连接? 解决方案 关闭信号是框架层处的WebSocket协议的一部分(请参阅RFC 6455节 5 ,和 afaik,libcurl并不属于http(Websocket用于其开放握手,因此您可以使用libcurl伪造它).因此,如果libcurl没有为您
0 2024-04-09
编程技术问答社区
操作被申请回调-libcurl中止
我有以下libcurl程序.当我运行程序时,我会收到以下错误. Operation was aborted by an application callback Process finished with exit code 42 我的完整程序 #include #include #include #include #include #define TIMETYPE double #define TIMEOPT CURLINFO_TOTAL_TIME #define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES 6000 struct myprogress { TIMETYPE lastruntime; CURL *curl; }; struct memoryStruct { uint8
8 2024-04-09
编程技术问答社区
错误。在DescribeRegions的API调用中出现InvalidAction(亚马逊AWS/EC2 API)。
我正在编写一个与Amazon EC2 API互动的应用程序,并且由于我以前从未做过此事,所以我决定从诸如DefuctereRevions之类的简单开始. 我正在在C中这样做,因此不容易使用库,因此我必须将其与libcurl和libcrypto一起入侵.完全披露,这是我第一次与AWS/EC2 API进行编程,因此这很可能是一个愚蠢的新手错误. 我确实通过Stackoverflow阅读了;这与问题该人试图从bash发送请求,但没有引用字符串.我正在通过curl_easy_perform() 发送请求 阅读了所有文档后,我可以找到所有文档(在此示例中,让我替换我的AWS Access键和BBBBBBB的AAAAAAAAA. i构造签名请求的参数部分,如所述Action=DescribeRegions&AWSAccessKeyId=AAAAAAAA&SignatureMethod=HmacSHA256&"SignatureVersion=2&Timestamp=2013-0
0 2024-04-09
编程技术问答社区
libcurl http获取json格式的请求
有没有办法使用json格式的libcurl发送http获取请求? 我当前的请求是 curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost:9200/_search?q=tag:warcraft") 使用libcurl.它等效于卷曲 curl -XGET http://localhost:9200/_all/tweet/_search?q=tag:warcraft 我想使用libcurl发送以下卷曲请求(以JSON格式). curl -XGET http://localhost:9200/_search -d '{ "query" : { "term" : { "tag": "warcraft" } } }' 我想知道同等的libcurl代码以发送上述请求.谢谢. 解决方案 您应该使用curlopt_postfields curl_easy_
4 2024-04-09
编程技术问答社区
使用libcurl作为XML文件发送SOAP请求
我正在尝试使用libcurl将SOAP HTTP发布到Web服务.我有XML文件中已经形成的SOAP请求.现在,我需要将这些XML文件转换为Web服务. N.B.我对编写Web服务的新手(尤其是在C中). 有没有办法使用libcurl直接从XML文件发送肥皂请求?还是我必须将内容读为字符串?我仅限于使用C编程语言来完成任务. 我一直在查看文档和不同的代码片段,但我似乎找不到任何要做的事情.此curl链接通过字符串 http://curl.haxx.se/libcurl/C/post-callback.html ).出于速度目的,我非常希望在发送字符串之前不必传递. 解决方案 您使用curl_easy_setopt()?然后,您可能需要看一下curlop_writeFunction和curlopt_writedata. 其他解决方案 我这样做的方式: *获取 tinyxml ,将文件加载到a TiXmlDocument中并使用TiXmlPrinter并使用xm
0 2024-04-09
编程技术问答社区
调用任何cURL函数在执行程序时都会出现 "找不到入口点 "的情况
在Visual Studio 2012(SP4)中,如果我创建了一个新的Windows EXE解决方案,请使用Nuget命令行进行"安装包装卷曲",构建解决方案,程序将正确执行并按预期显示简单的窗口. 如果我将呼叫添加到curl_version()到代码(意味着curl,ssl等...现在引用dlls) - 我从Windows中获取错误,说... MyProgram.EXE - Entry Point Not Found The procedure entry point CreateFile2 could not be located in the dynamic link library KERNEL32.DLL. 我已经使用依赖关系沃克来验证dlls(libcurl,libssh2,ssleay32和zlib.dll)是安装的nuget - 而它们是相同的. . 帮助... 解决方案 使用/a>解决方案 - 基本上是zlib v1.2.8.1引用Windo
0 2024-04-09
编程技术问答社区
libcurl HTTP HEAD请求没有自动代理连接头
我需要关于使用libcurl进行以下内容的澄清: 我需要发送如下所示的HTTP Head请求:: HEAD /mshare/3/30002:12:primary/stream_xNKNVH.mpeg HTTP/1.1 Host: 192.168.70.1:8080 Accept: */* User-Agent: Kreatel_IP-STB getcontentFeatures.dlna.org: 1 我编写的代码(如下所示),以略有不同的方式发送Head请求: curl_global_init(CURL_GLOBAL_ALL); CURL* ctx = NULL; const char *url = "http://192.168.70.1:8080/mshare/3/30002:12:primary/stream_xNKNVH.mpeg" ; char *returnString; struct curl_slist *headers = NULL;
0 2024-04-09
编程技术问答社区
如何让libcurl在每个http数据包中发送digest认证头?
我有以下功能http_send_message() wich我每次都想发送HTTP消息时使用: http_send_message(char *msg_out, char **msg_in) { CURLcode res; CURL *curl; curl = curl_easy_init(); if (!curl) return -1; curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.1.133:8080/tawtaw"); curl_easy_setopt(curl, CURLOPT_USERNAME, "tawtaw"); curl_easy_setopt(curl, CURLOPT_PASSWORD, "tawtaw"); curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC|CURLAUTH_
0 2024-04-09
编程技术问答社区
我如何使用libcurl函数 "curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);"
我想使用函数curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address),但是当我下载源代码时, ./configure && make && make install 每个fucntion都可以,但是此功能curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address).此函数说明 html.availability 表示此选项要求Libcurl由支持此操作的解析器后端构建. C-Ares后端是唯一的.这是什么意思?我如何使用分辨率后端构建libcurl. 谢谢 解决方案 这意味着您需要确保构建libcurl以使用 c-ares是一个单独的库,可以告诉Libcurl可以使用异步DNS和名称解析器来使用.
0 2024-04-09
编程技术问答社区
使用libcurl发送SMTP邮件
我编译了用libcurl船的示例. 源文件是smtp-tls.c 试图使用它通过Gmail发送邮件,这是我得到的 的回应 即将连接()到smtp.gmail.com端口465(#0) 尝试74.125.115.109 ... *连接 使用basic with with用户'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@gmail.com' get/http/1.1授权:基本xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx host:smtp.gmail.com:465 接受:/ 服务器的空回复 连接#0到主机smtp.gmail.com左完整 服务器什么也没返回(没有标题,没有数据) 关闭连接#0 我想念什么?除变量输入外,我没有以任何方式修改代码.在这台计算机上,我可以使用Outlook 2003发送和接收邮件. 编辑 尝试了另一个端
0 2024-04-08
编程技术问答社区
在c语言中使用Curl发送HTTP获取请求
请帮助我在C中使用Curl实施HTTP获取请求. 我需要用CURLOPT_HTTPHEADER用标头设置参数,但没有成功.我像 一样实施了 struct curl_slist* contentheader = NULL; contentheader = curl_slist_append(contentheader, "name=pradeep"); contentheader = curl_slist_append(contentheader, "lastname=singla"); curl_easy_setopt(curl, CURLOPT_URL, "https://www.googleapis.com/tasks/v1/users"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, contentheader); curl_easy_perform(curl); 在这种情况下,出现错误,例如"不正确的API请求
0 2024-04-08
编程技术问答社区
libcurl可以用来做多个并发请求吗?
我正在使用libcurl进行我的一个项目.我知道卷发不用于提出多个并发请求,但libcurl是否支持它? 我知道还有其他工具,例如AB,但Libcurl提供了许多功能. 再次,我知道我可以在脚本中使用卷曲来运行多个请求,但这不是我想要的. 我找不到令人满意的答案.虽然这不是结论性. 我应该能够使用多个手柄进行多个连接. 有人尝试过吗?我需要注意吗? 我应该能够做这样的事情: my_app --total_connections 1000 --concurrency 100 url 解决方案 要测试您要寻找的内容,我写了一个小C程序.它在循环中使用libcurl执行10个http-get请求.使用OpenMP并行化循环(如果有). 要运行它,只需将其保存在称为parallel_curl_test.cpp的文件中,然后将其编译两次即可.首先使用并行版本使用g++ parallel_curl_test
2 2024-04-08
编程技术问答社区