0

ここで説明されているように、Delphi POST リクエストを Piwik に送信しようとしました: http://piwik.org/docs/tracking-api/reference/#toc-advanced-bulk-tracking-requests

私の Delphi の実装を以下に示します。

  FPiwikRequest := '';
  FPiwikRequest := FPiwikRequest + Format('?cvar=PAGE_%s&', ['something']);
  FPiwikRequest := FPiwikRequest + Format('action_name=6new_%s&', ['ActionPage']);
  FPiwikRequest := FPiwikRequest + Format('idsite=%d&', [3]);
  FPiwikRequest := FPiwikRequest + Format('rec=%d&', [1]);
  FPiwikRequest := FPiwikRequest + Format('url=%s&', ['http://localhost/analytics/index45.html']);
  FPiwikRequest := FPiwikRequest + Format('urlref=%s&', ['http://localhost/analytics/index13.html']);
  FPiwikRequest := FPiwikRequest + Format('_id=%s&', ['231e3849e534a3c6']);
  FPiwikRequest := FPiwikRequest + Format('rand=%d', [Random(1000)]);
  json := SO;
  json.O['requests'] := SA([]);
  json.A['requests'].S[0] := FPiwikRequest;
  json.A['requests'].S[1] := FPiwikRequest_2;
  json.S['token_auth'] := 'ffff9fb80b9558e4529fe96902dffff';
  FPiwikRequest := json.AsString;
  HTTPClient.POST(PIWIK_HOME + FPiwikRequest, response); //HTTPClient => idHTTP class

リクエストを送信した後、Piwik スクリプトは、送信された一括リクエストから最後のリクエスト json.A['requests'].S[1] のみを処理します。

* Python から同じ一括リクエストを送信すると、Piwik は送信された一括リクエストの両方のリクエストを処理します。

このような Delphi の POST 動作について何か考えはありますか?

4

1 に答える 1

1

申し訳ありませんが、この投稿に。答えは簡単です:)そして、アプローチの1つを以下に示します。

したがって、Params をメソッド POST に追加する必要があります。

LRequestParams := TStringStream.Create();
try
  LRequestParams.WriteString(FPiwikRequest);  
  HTTPClient.POST(PIWIK_HOME, LRequestParams, response);
finally
  LRequestParams.Free;   
end;
于 2013-10-17T13:25:16.790 に答える