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));

រក្សា buffer កំហុសឱ្យនៅរស់ ខណៈ handle យោងទៅវា។ មុនពេលចាកចេញពីដែនរបស់វា សម្អាត handle ឬជំនួស ឬលុប pointer CURLOPT_ERRORBUFFER របស់វា។ ឈ្មោះ host របស់ប្រូកស៊ីគឺជាកន្លែងជំនួស; បេក្ខជនដែលមិនបានផ្ទៀងផ្ទាត់ពី បញ្ជីប្រូកស៊ី HTTP អាចផ្តល់អាសយដ្ឋានសម្រាប់ការសាកល្បងគេហទំព័រសាធារណៈនេះ។ ប្រើ scheme និង port ពិតរបស់វា ហើយពិនិត្យថាតើវាអនុញ្ញាត tunnel HTTPS ឬអត់។

គោលដៅ HTTPS អាចប្រើប្រូកស៊ី HTTP។ libcurl គ្រប់គ្រង tunnel សម្រាប់ការផ្ទេរ HTTPS នោះ។ http:// ក្នុងជម្រើសប្រូកស៊ីពិពណ៌នាអំពីការតភ្ជាប់ទៅអន្តរការី។ ប្តូរវាទៅ https:// តែសម្រាប់ចំណុចបញ្ចប់ប្រូកស៊ីដែលពិតជាទទួល TLS និង build 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; ការបដិសេធ tunnel កើតឡើងមុនការឆ្លើយតបគេហទំព័រណាមួយ។

CURLOPT_FAILONERROR អាចចាត់ទុកកំហុស HTTP ជាច្រើនជាការបរាជ័យ ប៉ុន្តែឯកសាររបស់វាលើកឡើងពីករណីលើកលែងនៃការផ្ទៀងផ្ទាត់។ រក្សាការប្រកួត 407 របស់ប្រូកស៊ីឱ្យដាច់ពីស្ថានភាពគោលដៅ។

អត្ថបទពាក់ព័ន្ធ