Curl发送请求

tzdcorbm  于 2023-03-01  发布在  其他
关注(0)|答案(1)|浏览(199)

此代码成功发送请求。我想生成此错误[CURLE_SEND_ERROR]。我可以在代码中修改什么以使此错误出现。
是否有选项可以使请求失败?
代码为:

if(strcmp(XMLFILE, SIM_INFO_RESPONSE_JSON)==0)
{
curl_easy_setopt(pCurl, CURLOPT_TIMEOUT, 50);// 120 seconds for Service Directory
}
else
{
curl_easy_setopt(pCurl, CURLOPT_TIMEOUT,(long)CONN_TIMEOUT);
}

        curl_easy_setopt(pCurl, CURLOPT_HEADER,0L);
    
    curl_easy_setopt(pCurl, CURLOPT_HTTPHEADER, psHeader);
    
    
    
    curl_easy_setopt(pCurl, CURLOPT_URL, psUrl);
    
    
    
    
    curl_easy_setopt(pCurl, CURLOPT_POSTFIELDSIZE,-1L);
    curl_easy_setopt(pCurl, CURLOPT_POSTFIELDS, psBuf);
    curl_easy_setopt(pCurl, CURLOPT_POST,1L);
    
    if (strcmp(isWiFi, "WiFi") == 0)
    {
        
        
        
        curl_easy_setopt(pCurl, CURLOPT_SSLCERTTYPE, "CRT");
        
        
        
        curl_easy_setopt(pCurl, CURLOPT_CAINFO, "rootCA.crt");
     
        
        curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, 0L);
        
        
        curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYHOST, 0L);
    }

#ifndef PRODMODE
curl_easy_setopt(pCurl, CURLOPT_VERBOSE,1L);
curl_easy_setopt(pCurl, CURLOPT_DEBUGFUNCTION, OnDebug);
#endif

    curl_easy_setopt(pCurl, CURLOPT_WRITEFUNCTION, WriteDataFunc);
    curl_easy_setopt(pCurl, CURLOPT_WRITEDATA, &nFd);

int i;

    for ( i = 0; i < 1; i++)
    {
        res = curl_easy_perform(pCurl);
    
        if (res == CURLE_OK)
            {
                ShowMsg("\r\n استقبال \r\n", 100);
                break;
            }
    }

我尝试将此错误显示为CURLE_SEND_ERROR

vjrehmav

vjrehmav1#

res = curl_easy_perform(pCurl);
        res = CURLE_SEND_ERROR;

...或者在CURLOPT_PROGRESSFUNCTION中告诉操作系统切断互联网连接,但如何切断互联网连接完全取决于您使用的操作系统(例如Windows、Linux或MacOS?)
例如,如果您使用Microsoft Windows,您可以执行以下操作

curl_easy_setopt(pCurl, CURLOPT_PROGRESSFUNCTION, [](void *clientp,
                                 double dltotal,
                                 double dlnow,
                                 double ultotal,
                                 double ulnow)->size_t{
        system("netsh winsock reset");
        return 0;
});

(未测试)

相关问题