2017-02-21 78 views
3

我想使用C++ REST SDK(卡薩布蘭卡)庫執行POST HTTP請求,但我沒有成功...我也找不到任何最近/工作代碼段。 任何人都可以幫助我嗎?使用C++ REST SDK(卡薩布蘭卡)Http_client post請求

用我下面的代碼我得到一個運行時網:: JSON :: json_exception說: 「沒有一個字符串」:

json::value postData; 
postData[L"name"] = json::value::string(L"Joe Smith"); 
postData[L"sport"] = json::value::string(L"Baseball"); 

web::http::client::http_client client(L"https://jsonplaceholder.typicode.com/posts"); 

try 
{ 
    client.request(
     methods::POST, 
     L"", 
     postData/*.as_string().c_str()*/, 
     L"application/json"); 
} 
catch (web::json::json_exception &je) 
{ 
    std::cout << je.what(); 
} 
catch (std::exception &e) 
{ 
    std::cout << e.what(); 
} 
+0

即使我取消註釋.as_string()。c_str() – stkhou

+0

如果您將最小代碼剪切爲N粘貼可運行,它將幫助我們幫助您 –

+0

您是否嘗試刪除client.request()的最後一個參數(L「application/json」)? – roalz

回答

0

類似的東西會爲你做:

 web::json::value json_v ; 
     json_v["title"] = web::json::value::string("foo"); 
     json_v["body"] = web::json::value::string("bar"); 
     json_v["userId"] = web::json::value::number(1); 
     web::http::client::http_client client("https://jsonplaceholder.typicode.com/posts"); 
     client.request(web::http::methods::POST, U("/"), json_v) 
     .then([](const web::http::http_response& response) { 
      return response.extract_json(); 
     }) 
     .then([&json_return](const pplx::task<web::json::value>& task) { 
      try { 
       json_return = task.get(); 
      } 
      catch (const web::http::http_exception& e) {      
       std::cout << "error " << e.what() << std::endl; 
      } 
     }) 
     .wait(); 

     std::cout << json_return.serialize() << std::endl; 

你也可以簡單地解析這樣的字符串:

 web::json::value json_par; 
     json_par.parse("{\"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}"); 

剛剛在使用json對象之後,與第一個示例中的方法相同。如果你從文件中讀取json,它會稍微容易一些。

相關問題