【问题标题】:C++ Builder + RESTRequest + Dreamfactory - cannot pass session_id HTTPHeaderC++ Builder + RESTRequest + Dreamfactory - 无法传递 session_id HTTPHeader
【发布时间】:2015-03-11 10:17:21
【问题描述】:

使用 C++ Builder XE7 的试用版和 REST 组件。我想我没有正确地将 HTTPHeaders 传递给 Dreamfactory v1.8。我能够使用 POST 请求进行身份验证,该请求需要将电子邮件和密码作为 JSON 对象传递到 Body 属性中。我可以获得后续调用所需的 session_id。

RESTDebugger 工作得非常好,也可以从表中获取数据 - 但我无法将其转换为 C++ 中的应用程序。这是我调用登录资源后触发的事件的代码

enter code here
void __fastcall TForm1::RESTRequest1AfterExecute(TCustomRESTRequest *Sender)
    {
    Label1->Text = RESTResponse1->JSONText;

    TJSONObject *JSON = (TJSONObject*)TJSONObject::ParseJSONValue(RESTResponse1->JSONText);
    TJSONPair *pair = JSON->Get("session_id");
    sSessionID = pair->JsonValue->ToString();
    RESTRequest2->Resource = "mssql_utilities/leaveCategory?order=categoryname";
    RESTRequest2->Method = rmGET;
    RESTRequest2->AddParameter("X-DreamFactory-Application-Name", "NDTVi", pkHTTPHEADER);
    RESTRequest2->AddParameter("X-DreamFactory-Session-Token", sSessionID, pkHTTPHEADER);
    RESTRequest2->AddParameter()
    RESTRequest2->Execute();
}

我做错了什么?我怀疑 RESTRequest2->AddParameter 方法不正确。 RESTRequest2->Execute() 返回 HTTP 500 服务器错误。

我在 Windows 8.1 上工作,无法让 Fiddler 4 工作 - 所以我无法看到传递给服务器的内容。

请,请,帮助。需要完成这项工作,以便我可以购买许可证并开始从事该项目。

非常感谢

【问题讨论】:

    标签: c++ rest http-headers c++builder builder


    【解决方案1】:

    知道了!原来我在第一次调用时为会话 ID 参数传递了一个不正确的值。该代码有效。我使用了两个 RESTRequest 对象。一个通过 Dreamfactory 进行身份验证并返回 session_id,RESTRequest2 用于获取数据 - 会话 ID 作为 HTTP 标头传递给 Dreamfactory。

            TJSONObject *JSON = (TJSONObject*)TJSONObject::ParseJSONValue(RESTResponse1->JSONText);
            TJSONPair *pair = JSON->Get("session_id");
            sSessionID = pair->Value();
            RESTRequest2->Resource = "mssql_utilities/leavecategory";
            RESTRequest2->Params->AddItem("X-DreamFactory-Application-Name", "myApp", pkHTTPHEADER);
            RESTRequest2->Params->AddItem("X-DreamFactory-Session-Token", sSessionID, pkHTTPHEADER);
            RESTRequest2->Execute();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2017-12-19
      • 2015-08-25
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多