我正在为 iPhone 构建一个链接到Delphi XE2 DataSnap REST server的应用程序。
最初我是在 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;
关于如何解决这个问题的任何想法?