IdHttp:尝试下载文件时重定向到错误页面,__viewstate 每次都会更改

IdHttp: redirect to error page when trying to download a file, __viewstate changes each time

我已经成功登录并 post 使用 idHttp.post() 从 2 个站点编辑数据和下载数据,但我在第三个站点上遇到了问题
在这个新站点中,登录确实有效,但是当我尝试下载文件(使用 __doPostBack 下载 link)时,我被重定向到错误页面
我对所有 post 数据进行了两次和三次检查,它们与 http 分析器向我展示的完全一样 我注意到的唯一区别是在我成功访问的其他尝试和网站中,__viewstate 每次都是一样的,它永远不会改变,但在第三个站点中,它会随着每次登录而改变(我的意思是当我手动访问该站点并检查 http 分析器结果时,我可以看到 __viewstate参数值每次都不同)
我该怎么办?改变 __viewstate 参数有问题吗?如果是这样,我该如何解决?
我用于 posting 的代码:

try
 Response := TMemoryStream.Create;
try
  Request := TStringList.Create;
  try
    Request.Assign(TATDFileUtility.convertPairValueToRequestList(TATDFileUtility.extractPairValue('the site login parameters.txt', 3)));
    IdHTTP := TIdHTTP.Create;
    try
      IdHTTP.AllowCookies := True;
      IdHTTP.HandleRedirects := True;
      IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';

      IdHTTP.Post('thesite, the address for the login and main page and download page is the same', Request, Response);
      Response.SaveToFile('responseCode0.txt');

      Request.Clear;
      Response.Clear;
      Request.Assign(TATDFileUtility.convertPairValueToRequestList(TATDFileUtility.extractPairValue('httpDownloadParamters.txt', 3)));
      IdHTTP.Post('thesite, the address for the login and main page and download page is the same', Request, Response);
      Response.SaveToFile('responseCode1.txt');

如您在检查 repsonsecode0 后所见,我可以看到我已登录,但第二个响应代码显示错误并跟踪它显示我被重定向到错误页面。

ViewState 是动态的。您需要首先 GET HTML 页面定义通常在浏览器中提交 PostBack 的 <form> 元素。这允许网络服务器生成当前的 ViewState。然后解析 HTML 以提取 <form><input> 元素的名称和值,包括 ViewState,然后您可以 POST 这些值到 URL 在 <form>action 属性中指定。这是网络浏览器通常所做的,也是您需要用 TIdHTTP.

模拟的