DataSnap与JSON序列化(2)
2010-10-12 17:35
316 查看
Server Method可以支持OLEVariant类型,但不支持Variant类型,呵呵,都一样的东西,可能笔误吧。查看DSReflect.pas的这个函数
里面只列举了OLEVariant。
写一个函数试试:
客户端调用:
可以得到正确的结果。但是如果用http get调用,就会报错:
服务器错误信息:Cannot convert DBX type TDBXTypes.Variant into a JSON value
客户端错误信息:HTTP/1.1 500 Internal Server Error.
难道DataSnap自己没有使用JSON格式编码??
function TDSClass.GetDBXDataType(AllowUnknown: Boolean; Parameter: TDBXParameter): Integer; begin ..... else if FTypeData.ClassType.ClassNameIs(SOleVariant) then begin Result := TDBXDataTypes.VariantType; end ......
里面只列举了OLEVariant。
写一个函数试试:
function TERP_Order.TestVariantArray: OLEVariant; begin Result:=VarArrayOf(['wxh',34,True,Now]); end;
客户端调用:
procedure TForm1.Button5Click(Sender: TObject); var vC:TDBXCommand; P:TDBXParameter; V:OLEVariant; begin SQLConnection1.Params.Values['CommunicationProtocol'] := 'http'; SQLConnection1.Params.Values['HostName'] := edDSServer.Text; SQLConnection1.Params.Values['Port'] := edDSPort.Text; SQLConnection1.Params.Values['DSAuthenticationUser'] := edUserName.Text; SQLConnection1.Params.Values['DSAuthenticationPassword'] := edPassowrd.Text; SQLConnection1.Open; vC:=SQLConnection1.DBXConnection.CreateCommand; vC.CommandType:= TDBXCommandTypes.DSServerMethod; vC.Text:='TERP_Order.TestVariantArray' vC.Prepare; vC.ExecuteUpdate; V:=vC.Parameters[0].Value.asVariant; Edit1.Text:=VarToStr(V[0]); vC.Free; end;
可以得到正确的结果。但是如果用http get调用,就会报错:
服务器错误信息:Cannot convert DBX type TDBXTypes.Variant into a JSON value
客户端错误信息:HTTP/1.1 500 Internal Server Error.
难道DataSnap自己没有使用JSON格式编码??
相关文章推荐
- datasnap 2010 利用JSON序列化和反序列化任何类型的对象
- DataSnap与JSON序列化(4)
- DataSnap与JSON序列化(1)
- DataSnap 多层返回数据集分析FireDAC JSON
- 化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter)
- Tiburon遊記3 動手建立一個DataSnap JSON伺服器吧
- WCF(10):序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, Binary
- DataContractJsonSerializer的序列化与反序列化
- DataContractJsonSerializer和JavaScriptSerializer 在序列化时有一点儿区别
- 化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter)
- Tiburon遊記2 DataSnap和JSON
- .NET 3.5: 使用DataContractJsonSerializer进行JSON 序列化
- 化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter)
- [IgnoreDataMember]:json序列化循环引用的问题
- 化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer
- DataContractJsonSerializer进行Json的序列化和反序列化
- 化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter)
- DataSnap Server HTTP json格式修改 返回图片
- DataContractJsonSerializer反序列化的“System.Xml.XmlException: 遇到意外字符“ï””错误