በ libcurl easy handle ላይ ግልጽ ፕሮክሲ ማድረግ
የ libcurl easy handle ለአንድ የተወሰነ ፕሮክሲ ማዋቀር እና የአማራጭ ስህተቶችን፣ የማስተላለፍ ውድቀቶችን እና HTTP ሁኔታን መለየት።
libcurl የፕሮክሲ ውቅርን ማስተላለፉን ከሚያከናውነው 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 ፕሮክሲ ሊጠቀም ይችላል። libcurl ለዚያ የHTTPS ማስተላለፍ መሿለኪያውን ይይዛል። በፕሮክሲ አማራጩ ውስጥ ያለው http:// ከመካከለኛው ጋር ያለውን ግንኙነት ይገልጻል። ወደ https:// ይቀይሩት ፕሮክሲው በእውነት TLS የሚቀበል ከሆነ እና libcurl ግንባታው ከሚደግፈው ብቻ።
ትክክለኛውን መንገድ ሆን ብለው ያድርጉ
ግልጽ የፕሮክሲ አማራጭ ተመሳሳዩን የፕሮክሲ አካባቢ ቅንብር ይሻራል። ማለፍ የተለየ ውሳኔ ነው፦ የተወረሰ 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 ተግዳሮት ከመድረሻው ሁኔታ ለያዩት።