IdHttp Post数据到Java后台时 加号变空格的问题

由于进行了aes加密

当IdHttp Post数据到Java后台时 发现加号变空格

原因是

application/x-www-form-urlencoded 

C/类C/delphi并不会自动进行urlEncode.

但是java中

org.apache.catalina.connector.Request

Request会先urlDecode.

但是后来发现IdHttp Post(urlEncode(data))的时候  java后台并不会自动解密

目前未发现原因,只能在java端手动解密

->>这就导致了我没有encode  你java自动decode  我encode了  java又不自动encode了

目前尚未知晓原因 估计是IdHttp 的一个bug

解决方法:使用另外一种方式去post

function TJsonBusi.GetJson(aSetParamListEvent: TSetParamListEvent): String;

var
   ParamList: TStringList;
   req: IXMLHTTPRequest;
   url: WideString; //要访问的url
   tempStr, params : string;
   I: Integer;
begin
  Result := '';
  ParamList := TStringList.Create;
  try
    try
      aSetParamListEvent(ParamList);
      req := CoXMLHTTP.Create;
      url := 'http://localhost:2001/check';
      req.open('Post', url, False, EmptyParam, EmptyParam);
      //设置post必要参数
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      //req.SetRequestHeader('Content-Length', intToStr(length(sParams)));
      //提交数据
      for  tempStr in ParamList do
        params :=  params+tempStr+'&';
      //发送请求
      req.send(params);
      Result:= req.responseText;
    except
      //
    end;
  finally
    ParamList.Free;
  end;
end;

猜你喜欢

转载自blog.csdn.net/pzx521521/article/details/80405783