2014-03-25 1 views
0

Запустив файл.cpp, curl_easy_perform (curl) печатает ответ от file.php как «[{« Aid_response »:« 1 »,« Acd_response »: 2 "}]" в терминале. Но как я могу сохранить его в переменной? Пожалуйста, помогите мне.Хранить данные ответа в переменной на пост с помощью libcurl C++

Мой file.cpp

#include <iostream> 
    #include <stdlib.h> 
    #include <stdio.h> 
    #include <curl/curl.h> 

    using namespace std; 
    size_t size = 0; 

    int main() { 
    CURL *curl; 
    CURLcode res; 
    curl_global_init(CURL_GLOBAL_ALL); 
    curl = curl_easy_init(); 
    if(curl) 
    { 
    curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/file.php"); 
    string out = "Aid=1&Acd=2"; 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, out.c_str()); 
    res = curl_easy_perform(curl); 
    if(res != CURLE_OK) 
     fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res)); 
    curl_easy_cleanup(curl); 
    } 
    curl_global_cleanup(); 
    return 0; 
    } 

Мой file.php

<?php 
$Aid = $_REQUEST['Aid']; 
$Acd = $_REQUEST['Acd']; 
$data = array(); 
$data[] = array('Aid_response'=> $Aid, 'Acd_response'=> $Acd); 
echo json_encode($data); 
?> 

ответ

1

Я использовал CURLOPT_WRITEFUNCTION для хранения ответа на переменную и ее теперь работает отлично.

Вот file.cpp

#include <iostream> 
#include <stdlib.h> 
#include <stdio.h> 
#include <curl/curl.h> 

using namespace std; 
size_t size = 0; 

size_t write_to_string(void *ptr, size_t size, size_t count, void *stream) { 
    ((string*)stream)->append((char*)ptr, 0, size*count); 
    return size*count; 
} 
    int main() { 
    CURL *curl; 
    CURLcode res; 
    curl_global_init(CURL_GLOBAL_ALL); 
    curl = curl_easy_init(); 
    if(curl) 
    { 
    string out = string("http://localhost/canvas1/flix2.php?Aid=1&Acd=2"); 
    curl_easy_setopt(curl, CURLOPT_URL, out.c_str()); 
    string response; 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_to_string); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); 
    res = curl_easy_perform(curl); 
    cout << "Variable response : " << response; 
    if(res != CURLE_OK) 
     fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res)); 
    curl_easy_cleanup(curl); 
    } 
    curl_global_cleanup(); 
return 0; 
}