• Delphi7 TIdMultiPartFormDataStream 的坑


    对接快麦接口时,使用TIdMultiPartFormDataStream 多表单提交数据。

    因为TIdMultiPartFormDataStream  每加一个字段时,总会在最后多加一个回车。这也就导致了最后总是有一个回车,接口在读取最后一个值时会多一个回车字符。导致签名过不了。

    要处理一下,这里不改源码。有可能其他厂商是有处理这个问题的,但是对接快麦没有。

    var
     FormData: TIdMultiPartFormDataStream;
     FormDataStr: TStringStream;
     FormDataStr2:string;
     DelStr:string;
    begin
     FormData := TIdMultiPartFormDataStream.Create;
     FormData.AddFormField('TEST','123');
     FormData.AddFormField('TEST2','234');
     FormDataStr := TStringStream.Create('');
     FormData.Position := 0;
     FormDataStr.CopyFrom(FormData,FormData.Size);
     //要截取掉的字符
     DelStr := #13#10#13#10+'--'+FormData.Boundary+'--';
     FormDataStr2 :=  copy(FormDataStr.DataString,1,Length(FormDataStr.DataString)-Length(DelStr))+'--'+FormData.Boundary+'--';
     mmo1.Lines.Add(FormDataStr2);

    前后对比:

    没有处理前的:最后一个test2 值是234 但是多了一行回车
    ----------052922172950309
    Content-Disposition: form-data; name="TEST"
    
    123
    ----------052922172950309
    Content-Disposition: form-data; name="TEST2"
    
    234
    
    ----------052922172950309--
    处理后的:
    ----------052922172950309
    Content-Disposition: form-data; name="TEST"
    
    123
    ----------052922172950309
    Content-Disposition: form-data; name="TEST2"
    
    234
    ----------052922172950309--
  • 相关阅读:
    Java String字符串补0或空格
    oracle查看当前用户权限
    plsql developer 导出导入存储过程和函数
    扩展jQuery easyui datagrid增加动态改变列编辑的类型
    jQueryEasyUI Messager基本使用
    combox源码解析
    Solr -- Solr Facet 2
    Solr -- Solr Facet 1
    nginx -- 安装配置Nginx
    DOS
  • 原文地址:https://www.cnblogs.com/BTag/p/16324358.html
Copyright © 2020-2023  润新知