Tôi đang làm bài kiểm tra trên một trò chơi trình duyệt. Yêu cầu đăng bài này giả sử đưa ra một lệnh để xây dựng một tòa nhà. Miễn là tôi đã đăng nhập, tôi có thể nhấp vào nút Gửi Người gửi và nó hoạt động tốt. Điều này có nghĩa là không có giá trị nào hết hạn. Nhưng nếu tôi đăng xuất và đăng nhập lại thì nó sẽ không hoạt động. Tôi sẽ phải tạo một bài đăng Postman khác qua số interceptor
.Mô phỏng Postman Post in C# - RestSharp
Tôi muốn mô phỏng yêu cầu bài đăng này bằng C#;
Đây là cách bài đăng của tôi trông giống như trong Người đăng bài;
Body Các thông số trong Postman
Nếu bạn có người đưa thư được cài đặt, nhấp here nhập khẩu theo yêu cầu.
Đây là mã C# của tôi. Tôi đang sử dụng thư viện có tên là 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;
Khi tôi bấm vào Gửi nút bên Postman, hành động hiệu quả. Tuy nhiên, mặc dù tôi đã cố gắng bó các phương pháp khác nhau, tôi không thể có được chức năng C# của tôi làm việc.
Bất kỳ loại thư viện thủ thuật bẩn nào và được phép sử dụng. Không có quy tắc nào miễn là yêu cầu hoạt động theo cách có lập trình bằng ngôn ngữ C#.
Tôi hy vọng sẽ thấy phản hồi bắt đầu bằng;
{ "thành công": "Komut verildi", "date_complete": 86, "date_complete_formated": "00:01:26", "building_orders":"
Edit: tôi có thể sử dụng cách khác để mô phỏng yêu cầu bài này Nó không phải là trong RestSharp
chỉnh sửa 2:.. tôi sẽ cập nhật các thông số của tôi mỗi khi tôi đăng nhập để bạn có thể tạo lại vấn đề tôi đang gặp khó.
Chỉnh sửa 3: Người đăng bài có thể tạo mã C# bằng cách sử dụng RestSharp
. Đây là mã mà Postman tạo ra. Tuy nhiên, nó không hoạt động.
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);
Điều tôi nhận thấy là Postman không đặt thông số cơ thể vào mã được tạo.
tại sao không sử dụng 'HttpClient'? – John
@ John Tôi mở để sử dụng bất cứ điều gì miễn là nó hoạt động. Nếu bạn có thể cung cấp câu trả lời bằng cách sử dụng HttpClient Ill, hãy thử. RestSharp đang được sử dụng rộng rãi và được cho là làm cho mọi thứ trở nên dễ dàng hơn. – 0014
Sự cố bạn đang gặp phải là gì? có nhiều tham số "động" trong truy vấn và tôi không thể kiểm tra nó, chẳng hạn như mã thông báo người dùng bên trong cookie có thể đã hết hạn, dấu thời gian. bạn cần mô tả nó cụ thể hơn. Và bạn không cần thêm mọi tiêu đề vào yêu cầu POST của mình, có một vài tiêu đề là requird, Accept, Cookie. và tôi nghĩ bạn không cần thêm tiêu đề 'content-type', restSharp sẽ thêm cho bạn – John