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 ಪ್ರಾಕ್ಸಿ ಬಳಸಬಹುದು. libcurl ಆ HTTPS transfer ಗಾಗಿ ಸುರಂಗವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಪ್ರಾಕ್ಸಿ option ನಲ್ಲಿನ http:// ಮಧ್ಯವರ್ತಿಯೊಂದಿಗಿನ ಸಂಪರ್ಕವನ್ನು ವಿವರಿಸುತ್ತದೆ. ಅದನ್ನು https:// ಗೆ ಬದಲಿಸಿ ಕೇವಲ TLS ಅನ್ನು ನಿಜವಾಗಿ ಸ್ವೀಕರಿಸುವ ಪ್ರಾಕ್ಸಿ ಎಂಡ್ಪಾಯಿಂಟ್ ಮತ್ತು ಅದನ್ನು ಬೆಂಬಲಿಸುವ libcurl build ಗಾಗಿ ಮಾತ್ರ.
ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗವನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿಸಿ
ಸ್ಪಷ್ಟ ಪ್ರಾಕ್ಸಿ 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 ಸವಾಲನ್ನು ಗಮ್ಯದ ಸ್ಥಿತಿಯಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಇರಿಸಿ.