在CPPREST SDK中发布请求的答案

问题描述

我发送带有json(用户名,密码)的帖子请求:

json::value v1; 
v1[L"password"] = json::value::string(U("5367598"));
v1[L"username"] = json::value::string(U("poplovok"));

display_json(v1,L"CLIENT MADE POST : ");
make_request(client,methods::POST,v1);

在服务器端,我具有此功能,但是我复制了该功能并且不完全理解(function 操作)

void handle_request(
   HTTP_Request request,function<void(json::value const &,json::value &)> action)
{
   auto answer = json::value::object();

   request
      .extract_json()
      .then([&answer,&action](pplx::task<json::value> task) {
         try
         {
            TRACE("ZADOROVA");
            auto const & jvalue = task.get();
            display_json(jvalue,L"R: ");

            if (!jvalue.is_null())
            {
               action(jvalue,answer);
            }
         }
         catch (http_exception const & e)
         {
            wcout << e.what() << endl;
         }
      })
      .wait();

   
   display_json(answer,L"S: ");

   request.reply(status_codes::OK,answer);
}

我试图检查json值,以及它们是否能正确回答json令牌,并具有此功能,但似乎不起作用。

    void handle_firstpost(HTTP_Request request)
{
    TRACE("\nhandle FirsTPOST\n");
    wcout << "1" << endl;
    handle_request(
        request,[](json::value const& jvalue,json::value& answer)
        {
            wcout << "2" << endl;
            if (jvalue.at(1) == json::value::string(U("5367598")))
            {
                wcout << "3" << endl;
                json::value JsonAnswer;
                JsonAnswer[L"Token"] = json::value::string(U("12j3lkanwlnlkl4kml1k2melk12n4lkmasldio948"));
                answer = JsonAnswer;
            }
            wcout << "4" << endl;
            wcout << jvalue.at(1) << endl;
            
        });
    wcout << "5" << endl;
}

这是应用程序的输出,我不明白为什么它只放了两个前wcout。

This is output of the apps,and i dont understand why it out put only two first wcouts.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)