gpt4 book ai didi

objective-c - 来自iOS asihttprequest的Delphi XE2 DataSnap REST处理参数

转载 作者:行者123 更新时间:2023-12-03 18:42:51 24 4
gpt4 key购买 nike

我正在为iPhone构建一个与Delphi XE2 DataSnap REST服务器链接的应用程序。

最初,我是在Embarcadero的移动连接器的帮助下对iOS前端进行编码的,但是由于许多错误,我不得不在asihttprequest的帮助下编写自己的链接。

虽然我可以让系统处理JSON请求并传递一个或两个参数(使用URL),例如:-

NSURL *theURL = [NSURL URLWithString:@"http://192.168.1.2:8080/datasnap/rest/tservermethods1/SaveMileage/type1/100];
request = [ASIHTTPRequest requestWithURL:theURL];


(其中服务器方法为SaveMileage,两个参数值为type1和100)

但是,如果要添加更复杂的参数,则需要使用appendPostData通过JSON发布参数:-

[request appendPostData:jsonMutData];


以下是jsonMutData的输出:-

{
"client_ref" : "ABC100",
"mileage_type" : "Fee Work",
"mileage_description" : "test",
"mileage_id" : "0",
"mileage_date" : "03\/15\/2012"
}


但是,当我通过应用程序将此消息发布到服务器时,我收到以下响应,并且该调用未由DataSnap服务器处理:-

{"error":"**Cannot convert JSON value** {\"client_ref\":\"ABC100",\"mileage_type\":\"Fee Work\",\"mileage_description\":\"test\",\"mileage_id\":\"\",\"mileage_date\":\"03\/15\/2012\"} input into TDBXTypes.WideString"}


下面是DataSnap函数的结构:-

function TServerMethods1.updateSaveMileage(mileage_id: string; 
client_ref: string; mileage_date: String; mileage_type: string;
mileagefigure: string; description: string; notepad: string): string;


有关如何解决此问题的任何想法?

最佳答案

我知道这个问题有点老了,但是我遇到了同样的问题,也找不到答案。

幸运的是,几个小时后,我终于想出了解决该问题的方法。

您需要做的就是修改您的函数以接受TJSONObject,如下所示:

function TServerMethods1.UpdateMethod(AJSONObject: TJSONObject): TJSONObject;
var
JSONText: string;
begin

JSONText := AJSONObject.ToJSON;

// code...

end;


在Delphi 10.1 Berlin上测试。

关于objective-c - 来自iOS asihttprequest的Delphi XE2 DataSnap REST处理参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com