libcurl easy handle పై స్పష్టమైన ప్రాక్సీ పెట్టడం
నిర్దిష్ట ప్రాక్సీ కోసం libcurl easy handleని కాన్ఫిగర్ చేయండి మరియు option లోపాలు, transfer వైఫల్యాలు, HTTP స్థితిని వేరు చేయండి.
libcurl ప్రాక్సీ కాన్ఫిగరేషన్ను transfer చేసే easy handleకి జోడిస్తుంది. మధ్యవర్తి చిరునామాను ఆ handleపై సెట్ చేయండి, CURLOPT_URL గమ్య URLగానే ఉండనివ్వండి.
కింది భాగం libcurl ప్రారంభమైందని మరియు handle చెల్లుబాటు అయ్యే easy handle అని ఊహిస్తుంది:
char error[CURL_ERROR_SIZE] = {0};
CURLcode result;
result = curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, error);
if (result == CURLE_OK)
result = curl_easy_setopt(handle, CURLOPT_URL,
"https://example.com/");
if (result == CURLE_OK)
result = curl_easy_setopt(handle, CURLOPT_PROXY,
"http://proxy.example:8080");
if (result == CURLE_OK)
result = curl_easy_perform(handle);
if (result != CURLE_OK)
fprintf(stderr, "%s\n", error[0] ? error
: curl_easy_strerror(result));
handle దానిని సూచించినంత కాలం లోపాల బఫర్ను సజీవంగా ఉంచండి. దాని పరిధిని విడిచిపెట్టే ముందు handleను శుభ్రం చేయండి లేదా దాని CURLOPT_ERRORBUFFER పాయింటర్ను భర్తీ చేయండి లేదా తొలగించండి. ప్రాక్సీ హోస్ట్నేమ్ ప్లేస్హోల్డర్; HTTP ప్రాక్సీ జాబితా నుండి ధృవీకరించని అభ్యర్థి ఈ పబ్లిక్ సైట్ పరీక్షకు చిరునామాను అందించగలదు. దాని వాస్తవ స్కీమ్ మరియు పోర్ట్ను ఉపయోగించి, HTTPS సొరంగాన్ని అనుమతిస్తుందో లేదో తనిఖీ చేయండి.
HTTPS గమ్యం HTTP ప్రాక్సీని ఉపయోగించగలదు. ఆ HTTPS transfer కోసం libcurl సొరంగాన్ని నిర్వహిస్తుంది. ప్రాక్సీ optionలోని http:// మధ్యవర్తితో కనెక్షన్ను వివరిస్తుంది. TLSను నిజంగా అంగీకరించే ప్రాక్సీ ఎండ్పాయింట్ మరియు దానిని మద్దతిచ్చే libcurl build కోసం మాత్రమే దాన్ని https://కి మార్చండి.
ప్రభావవంతమైన మార్గాన్ని ఉద్దేశపూర్వకంగా చేయండి
స్పష్టమైన ప్రాక్సీ option సంబంధిత ప్రాక్సీ వాతావరణ సెట్టింగ్ను భర్తీ చేస్తుంది. బైపాస్ ప్రత్యేక నిర్ణయం: వారసత్వంగా వచ్చిన no_proxy ఇప్పటికీ గమ్యాన్ని మినహాయించగలదు. ఈ handleకి ఇచ్చిన ప్రతి గమ్యానికి ఎంచుకున్న ప్రాక్సీని ఉపయోగించాల్సి ఉంటే, ఆ విధానంలో భాగంగా CURLOPT_NOPROXYను ఖాళీ స్ట్రింగ్గా కాన్ఫిగర్ చేయండి.
దీనికి విరుద్ధంగా, CURLOPT_PROXYను ఖాళీ స్ట్రింగ్కు సెట్ చేయడం ప్రాక్సీ వినియోగాన్ని స్పష్టంగా నిలిపివేస్తుంది. దాన్ని NULLకి సెట్ చేయడం స్పష్ట కేటాయింపును తొలగించి పర్యావరణ ఆధారిత ప్రవర్తనను మళ్లీ అనుమతిస్తుంది. ఆ రెండు విలువలు వేర్వేరు లక్ష్యాలకు సేవ చేస్తాయి.
Content-Type: text/xml వంటి లక్ష్య-నిర్దిష్ట హెడర్ ప్రాక్సీని ఎంచుకోదు. వాస్తవ అభ్యర్థన బాడీ మరియు గమ్య APIకి ఆ మీడియా రకం అవసరమైనప్పుడు మాత్రమే దాన్ని జోడించండి.
HTTP ఫలితాన్ని కూడా చదవండి
విజయవంతమైన curl_easy_perform అంటే వెబ్సైట్ విజయవంతమైన HTTP స్థితిని తిరిగి ఇచ్చిందని కాదు. CURLINFO_RESPONSE_CODEను చదివి అప్లికేషన్ స్థితి నిర్వహణను వర్తించండి. ప్రాక్సీ CONNECT ప్రతిస్పందనకు దాని స్వంత విలువ ఉంది, CURLINFO_HTTP_CONNECTCODE; సొరంగ నిరాకరణ ఏదైనా వెబ్సైట్ ప్రతిస్పందనకు ముందు వస్తుంది.
CURLOPT_FAILONERROR అనేక HTTP లోపాలను వైఫల్యాలుగా పరిగణించగలదు, కానీ దాని డాక్యుమెంటేషన్ ప్రామాణీకరణ మినహాయింపులను పేర్కొంటుంది. ప్రాక్సీ 407 సవాలును గమ్య స్థితి నుండి వేరుగా ఉంచండి.