Freagairtean dà-dhìreach libcurl fhaighinn ann an std::string C++
Cuir std::string seachad mar cho-theacs a' chlàir-ais fhilleadh agus cuir cunntasan byte follaiseach ris nuair a gheibh thu dàta dà-dhìreach le libcurl.
Faodaidh neach-ionaid HTML fhaighinn gu soirbheachail agus ìomhaigh a mhilleadh fhathast fhad 's a tha e ga copaigeadh a-steach do bhuidsear C++. Mus atharraich thu protocol an neach-ionaid, thoir sùil air a' chlàr-ais fhilleadh faighinn agus air an nì a thèid a chuir seachad mar a cho-theacs.
CURLOPT_WRITEDATA a' solarachadh puingear dhan chlàr-ais sgrìobhaidh. Gun chlàr-ais gnàthaichte, tha sgrìobhadair bunaiteach libcurl a' dùil ri FILE *. Chan eil ciall aig seòladh mar &response, far a bheil response na std::string, ach nuair a chasteas an clàr-ais agad an co-theacs sin air ais dhan t-seòrsa a bha san amharc.
static size_t receive(char* data, size_t size,
size_t count, void* context) {
const size_t bytes = size * count;
auto* body = static_cast<std::string*>(context);
try {
body->append(data, bytes);
} catch (...) {
return 0;
}
return bytes;
}Clàraich an dà leth air an làimhseachadh shìmplidh a thathar a' cleachdadh airson a' ghluasaid:
std::string response;
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, receive);
curl_easy_setopt(handle, CURLOPT_WRITEDATA, &response);Tha an gairm append a' cleachdadh a' chunntais byte a chaidh a lìbhrigeadh. Chan eil dàta a' chlàir-ais air a chrìochnachadh le neoni, agus faodaidh ìomhaigh byte neoni a bhith innte; chaillteadh tomhas le strlen pàirt den bhodhaig. Faodaidh freagairt tighinn cuideachd tro iomadh gairm de dhiofar mheudan.
Tha tilleadh a' chunntais byte a chaidh a chaitheamh a' gabhail ris a' phìos. Tha tilleadh cunntais eadar-dhealaichte a' stad a' ghluasaid le mearachd sgrìobhaidh. Tha an geàrd eisgeachdaidh a' cumail fàilligeadh cuibhrige bho bhith a' teicheadh thairis air crìoch a' chlàir-ais C; feumaidh an neach a tha a' gairm coimhead air toradh a' ghluasaid fhathast mus tèid dèiligeadh ri response mar fhaidhle iomlan.
Cùm an sreang beò gus am bi a' ghluasad deiseil. Ma chuireas sgrìobhadh socaid neo-shioncronach an susbaint air adhart an uair sin, cùm na byte sin beò gus am bi an sgrìobhadh sin deiseil cuideachd. Airson freagairtean mòra, is fheàrr rèiteachadh sruthaidh cuibhrichte na bhith a' cruinneachadh a' bhodhaig gu lèir.