【问题标题】:Reading data from the website从网站读取数据
【发布时间】:2018-05-19 10:29:11
【问题描述】:

我正在寻求帮助以从代码级别访问网站http://dctgdansk.pl/pl/strefa-klienta/sprawdz-kontener-online/

有一个“集装箱编号”窗口,应在其中输入集装箱编号,然后按给定集装箱上的箭头数据。

很遗憾,页面的来源没有这样的信息可以通过IdHTTP1->Get(address)函数加载到我的程序中。

我没有从网站读取数据的经验,但在一种情况下,我在页面地址中使用了打开另一个页面所需的所有数据,在这种情况下,网站地址不变。

【问题讨论】:

  • 您需要使用POST 而不是GETPOST request with IdHTTP。此外,尚不清楚您的实际问题是什么。如果您使用 Delphi,为什么要用 c++ 标记您的问题? SO 是一个帮助您处理现有代码的地方,因此您应该展示一些您拥有的代码,并准确描述代码的哪一部分没有按预期工作,以及您期望它应该做什么。
  • 我有时会使用 C++ 和 Delphi。如果我使用 IdHTTP1.Post('dctgdansk.pl/pl/strefa-klienta/sprawdz-kontener-online', PostData);如何确定货柜号会到网站上标有“货柜号”的地方?

标签: delphi c++builder indy indy10 idhttp


【解决方案1】:

使用标准 HTML 网络表单提交容器编号:

<form action="https://dctgdansk.pl/pl/strefa-klienta/sprawdz-kontener-online/" method="post">
  <input type="text" id="cntrnumber" name="cntrnumber" value="Container Number:" class="default"/>
  <input type="submit" value="szukaj"/>
</form>

要使用 Indy 的 TIdHTTP 组件提交此类网络表单,请使用 Post() 方法的重载版本,该方法将 TStrings 作为输入,例如:

var
  Params: TStringList;
  Response: string;
begin
  Params := TStringList.Create;
  try
    Params.Add('cntrnumber=' + ContNum);
    Response := IdHTTP1.Post('https://dctgdansk.pl/pl/strefa-klienta/sprawdz-kontener-online/', Params);
  finally
    Params.Free;
  end;
  // use Response as needed ...
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 2018-07-15
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多