做测试代码的时候,发现无法读到提交的表单内容。记得之前是能读到的。来回写了好几个测试程序才发现问题在哪里。
记录一下:
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 的。