使用C ++ Builder XE7的试用版和REST组件。我想我没有正确地将HTTPHeaders传递给Dreamfactory v1.8。我能够通过POST请求进行身份验证,该请求需要将电子邮件和密码作为Body属性中的JSON对象传递。我可以获得后续调用所需的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工作 - 所以无法看到传递给服务器的内容。
拜托,请帮忙。需要让这个工作,所以我可以购买许可证并开始工作。
非常感谢
艾尔
答案 0 :(得分:0)
知道了!原来我从第一次调用传递了一个不正确的会话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();