做测试代码的时候,发现无法读到提交的表单内容。记得之前是能读到的。来回写了好几个测试程序才发现问题在哪里。
记录一下:
Delphi 创建的 WebBroker 项目,默认没有:uses WEB.ReqMulti;
这就导致了无法通过 Request.ContentFields.Values['MyName'] 来读到表单中的内容。修改代码,让页面返回 Request.ContentFields.Names[i],发现这个 Names[i] 是空值。
再修改代码,直接返回 Request.ContentFields[i],发现提交的表单内容连名字带内容都是有的。
这才想起可能是忘记了 uses WEB.ReqMulti 的原因。加上,测试通过。
另:如果没有 uses WEB.ReqMulti; 还会出现另外一种异常:输入的表单数据里面有中文,或者有上传的文件,则后台程序在第一行读 Request.ContentFields.Values['MyName'] 的时候,会直接出现异常:【No mapping for the Unicode character exists in the target multi-byte code page】。
调试的时候要注意上述现象,必要以为是中文编码的问题导致。其实这个时候,同样无法读到 Request.ContentFields.Names 的。
本文解决了一个在Delphi中使用WebBroker时无法读取表单内容的问题。原因是未引入WEB.ReqMulti单元。缺少该单元会导致无法通过Request.ContentFields.Values访问表单数据,并且在表单包含中文或文件时程序会抛出异常。
2174

被折叠的 条评论
为什么被折叠?



