Freagraí dénártha libcurl a fháil i std::string C++
Cuir std::string ar aghaidh mar chomhthéacs an aischuir agus cuir comhaireamh beart soiléir leis agus tú ag fáil sonraí dénártha le libcurl.
Is féidir le seachfhreastalaí HTML a fháil go rathúil agus íomhá a mhilleadh fós agus í á cóipeáil isteach i maolán C++. Sula n-athraíonn tú prótacal an tseachfhreastalaí, seiceáil an t-aischur fála agus an réad a chuirtear ar aghaidh mar a chomhthéacs.
CURLOPT_WRITEDATA soláthraíonn pointeoir don aischur scríofa. Gan aischur saincheaptha, tá scríbhneoir réamhshocraithe libcurl ag súil le FILE *. Ní bhíonn ciall le seoladh mar &response, áit a bhfuil response ina std::string, ach amháin nuair a chaitheann d'aischur an comhthéacs sin ar ais chuig an gcineál beartaithe.
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áraigh an dá leath ar an láimhseáil shimplí a úsáidtear don aistriú:
std::string response;
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, receive);
curl_easy_setopt(handle, CURLOPT_WRITEDATA, &response);Úsáideann an glao append an comhaireamh beart a seachadadh. Níl sonraí an aischuir críochnaithe le nialas, agus is féidir le híomhá bearta nialasacha a bheith inti; chaillfeadh tomhas le strlen cuid den chorp. Is féidir freagra a theacht freisin trí go leor aischur de mhéideanna éagsúla.
Glacann filleadh an chomhaireamh beart a ídíodh leis an smután. Má fhilltear comhaireamh difriúil, cuirtear an t-aistriú ar ceal le earráid scríofa. Coisceann an garda eisceachta ar theip leithdháilte éalú thar theorainn aischur C; caithfidh an glaoiteoir toradh an aistrithe a sheiceáil fós sula gcaitear le response mar chomhad iomlán.
Coinnigh an teaghrán beo go dtí go gcríochnóidh an t-aistriú. Má sheolann scríobh socaid asincrónach a inneachar ar aghaidh ansin, coinnigh na bearta sin beo go dtí go gcríochnóidh an scríobh sin freisin. I gcás freagraí móra, is fearr socrú sruthaithe teoranta ná an corp iomlán a charnadh.