私はブラウザゲームでテストを行っています。この投稿要求は、建物をビルドするコマンドを発行することを前提としています。私がログインしている間は、郵便受けの送信ボタンをクリックしても問題ありません。これは、値のうちのどれも失効しないことを意味します。しかし、もし私がログアウトしてログインしてしまえば、それはうまく動作しません。私はinterceptor
で別の郵便配達のポストを生成しなければならないでしょう。ポストマンをシミュレートするC# - RestSharp
私はC#を使用してこの投稿要求をシミュレートしたいと思います。
私の投稿は郵便配達でどのように見えますか?ポストマン で
あなたが郵便配達がインストールされている場合は、リクエストをインポートするhereをクリックします。
ここは私のC#コードです。私はRestSharpと呼ばれるライブラリを使用しています。私は、ポストマンの内側にアクション作品をボタンを送るをクリック
var client = new RestClient(@"https://tr42.klanlar.org");
var request = new RestRequest("game.php", Method.POST);
request.AddQueryParameter("village", "31413"); // adds to POST or URL querystring based on Method
request.AddQueryParameter("screen", "main"); // adds to POST or URL querystring based on Method
request.AddQueryParameter("ajaxaction", "upgrade_building"); // adds to POST or URL querystring based on Method
request.AddQueryParameter("type", "main"); // adds to POST or URL querystring based on Method
request.AddQueryParameter("h", "98e34aa6"); // adds to POST or URL querystring based on Method
request.AddQueryParameter("", ""); // adds to POST or URL querystring based on Method
request.AddQueryParameter("client_time", "1505659914"); // adds to POST or URL querystring based on Method
request.AddParameter("destroy", "0"); // adds to POST or URL querystring based on Method
request.AddParameter("force", "1"); // adds to POST or URL querystring based on Method
request.AddParameter("id", "wood"); // adds to POST or URL querystring based on Method
request.AddParameter("source", "31413"); // adds to POST or URL querystring based on Method
//var p1 = new Parameter
//{
// ContentType = "application/x-www-form-urlencoded",
// Name = "destroy",
// Value = "0"
//};
//request.AddParameter(p1);
//var p2 = new Parameter
//{
// ContentType = "application/x-www-form-urlencoded",
// Name = "force",
// Value = "1"
//};
//request.AddParameter(p2);
//var p3 = new Parameter
//{
// ContentType = "application/x-www-form-urlencoded",
// Name = "id",
// Value = "wood"
//};
//request.AddParameter(p3);
//var p4 = new Parameter
//{
// ContentType = "application/x-www-form-urlencoded",
// Name = "source",
// Value = "31413"
//};
//request.AddParameter(p4);
request.AddHeader("Accept-Language", "en-US,en;q=0.8,tr;q=0.6,ht;q=0.4");
request.AddHeader("Accept-Encoding", "gzip, deflate, br");
request.AddHeader("Referer", "https://tr42.klanlar.org/game.php?village=31413&screen=main");
//request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Tribalwars-Ajax", "1");
request.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36");
request.AddHeader("X-Requested-With", "XMLHttpRequest");
request.AddHeader("Origin", "https://tr42.klanlar.org");
request.AddHeader("Accept", "application/json, text/javascript, */*; q=0.01");
//request.AddParameter("application/x-www-form-urlencoded", "destroy=&force=&id=&source=");
//request.AddParameter("application/x-www-form-urlencoded", "destroy=0&force=1&id=31413&source=wood", ParameterType.RequestBody);
//request.AddBody("application/x-www-form-urlencoded", "destroy=0&force=1&id=31413&source=wood");
IRestResponse response = client.Execute(request);
var data = response.Content;
。しかし、私はさまざまな方法を試しましたが、私はC#関数を働かせることができませんでした。
任意の種類のライブラリ汚れたトリックなどを使用することができます。要求がC#言語を使用するプログラム的な方法で動作する限り、規則はありません。
私は、で始まる応答を期待しています。 、 "date_complete_formated" 86:
{ "成功": "Komut verildi"、 "date_complete" "0時01分26秒"、 "building_orders":」
編集:私は、このPOSTリクエストをシミュレートする別の方法を使用することができますそれはRestSharpである必要はありません
編集2:。。私は私のパラメータあなたは私が午前問題を再現できるように、私がログインするたびに更新されます。
編集3:郵便配達員はRestSharp
を使用してC#コードを生成することができます。これはPostmanが生成するコードです。しかし、それは動作しません。
var client = new RestClient("https://tr42.klanlar.org/game.php?village=31413&screen=main&ajaxaction=upgrade_building&type=main&h=8951b405&=&client_time=1505062595");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "dab31db4-b243-c317-e585-19da84c11e62");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("accept-language", "en-US,en;q=0.8,tr;q=0.6,ht;q=0.4");
request.AddHeader("accept-encoding", "gzip, deflate, br");
request.AddHeader("referer", "https://tr42.klanlar.org/game.php?village=31413&screen=main");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddHeader("tribalwars-ajax", "1");
request.AddHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36");
request.AddHeader("x-requested-with", "XMLHttpRequest");
request.AddHeader("origin", "https://tr42.klanlar.org");
request.AddHeader("accept", "application/json, text/javascript, */*; q=0.01");
IRestResponse response = client.Execute(request);
私が気づいたのは、Postmanが生成されたコードにボディパラメータを配置していないことです。
? – John
@John私はそれが動作する限り、何かを使用するために開いています。 HttpClientを使用して回答を提供できる場合は、試してみてください。 RestSharpは広く使用されており、物事をより簡単にすると考えられていました。 – 0014
あなたが直面している問題は何ですか?クエリには多くの「動的」パラメータがあり、Cookie内のユーザートークンが期限切れになるなど、タイムスタンプなどのようにテストできません。より具体的に記述する必要があります。そしてあなたのPOST要求にすべてのヘッダーを追加する必要はありません、いくつかのヘッダーは、歓迎、受け入れ、クッキーです。あなたは 'content-type'ヘッダを追加する必要はないと思います。restSharpはあなたのために追加する必要があります – John