2015-10-03 8 views
5

Ist es möglich, "Formulardaten" mit C++ Rest SDK (Casablanca) zu buchen? Ich habe einen gegebenen Webdienst, der Postdaten in "Formulardaten" sucht, nicht im Körper.C++ Rest sdk POST Formular Daten JSON

Dies ist der C++ Code:

http_client client(L"http://localhost/posttest/jsontest.php"); 

// Manually build up an HTTP request with header and request URI. 
http_request request(methods::POST); 
request.headers().add(L"Content-Type", L"application/json"); 
request.headers().add(L"Content-Length", L"100"); 
request.headers().add(L"Host", L"example.com"); 
request.headers().add(L"X-Requested-With", L"XMLHttpRequest"); 
request.set_body(obj); 
return client.request(request).then([id](http_response response) 
{ 
    if (response.status_code() == status_codes::OK) 
    { 
     return response.extract_json(); 
    } 
    else { 
     /* Print bad status code */ 
     wcout << L"Server returned returned status code " << response.status_code() << L'.' << std::endl; 
    } 
    return pplx::task_from_result(json::value()); 
}) 

Der Web-Dienst kann nur Daten wie diese verwenden (ich es nicht ändern kann):

$arr = [$_POST['code']]; 
header('Content-Type: application/json'); 
echo json_encode($arr); 

(Dies ist nur ein PHP-Beispielcode , was ich für den Test verwenden)

Antwort

4

das ist die Art und Weise:

utility::string_t Lreq = L"code=" + Lcode; 

http_client client(L"http://localhost/posttest/jsontest.php"); 

// Manually build up an HTTP request with header and request URI. 

http_request request(methods::POST); 
request.headers().add(L"Content-Type", L"application/x-www-form-urlencoded; charset=UTF-8"); 
request.headers().add(L"Content-Length", L"100"); 
request.headers().add(L"Host", L"testhost.com"); 
request.headers().add(L"X-Requested-With", L"XMLHttpRequest"); 
request.set_body(Lreq);