簡體   English   中英

HTTP請求在郵遞員中有效,但在代碼中不起作用

[英]HTTP Request works in postman but doesn't work in code

我正在嘗試訪問一個需要通過表單登錄的網站。 我使用了Postman HTTP客戶端。

我嘗試執行正常的http post請求,但似乎沒有用,我獲得了成功的狀態碼(200 OK),但沒有登錄,最終可以處理帶有BODY參數的GET請求(我沒有看到帶有主體參數的GET請求)。 好吧,我嘗試用C#代碼模擬此請求,但是沒有運氣,甚至嘗試了Postman提供的生成代碼,但沒有運氣。 下面是Postman請求和基於自動生成的Postman代碼的C#代碼段。 有人知道是否可以通過任何庫提出此請求,或者是否有我想念的東西?

先感謝您。

        var client = new RestClient("https://thessalia-3.teilar.gr/login.asp");
        var request = new RestRequest(Method.GET);
        request.AddHeader("cache-control", "no-cache");
        request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
        request.AddHeader("Referer", "https://thessalia-3.teilar.gr/login.asp");

        var parameters = new Dictionary<string, string>();

        parameters["userName"] = JsonConvert.SerializeObject("myusername");
        parameters["pwd"] = JsonConvert.SerializeObject("mypass");
        parameters["loginTrue"] = JsonConvert.SerializeObject("extravalue");

        var content = new FormUrlEncodedContent(parameters);

        request.AddParameter("application/x-www-form-urlencoded", content);
        IRestResponse response = client.Execute(request);
        Console.WriteLine(response.Content);
        Console.WriteLine(response.StatusCode);

郵遞員索取照片

編輯:

郵遞員請求正文參數

我也嘗試運行此程序,但也未登錄。 自動生成的代碼形式Postman

如果請求成功(200),並且您獲得了“無效憑據”的HTML頁面,那么發出請求的代碼應該很好,並且問題出在憑據上。 就像我在第一條評論中所說的那樣,不要將參數序列化為JSON,而是對其進行URL編碼:

parameters["userName"] = HttpUtility.UrlEncode("myusername");
parameters["pwd"] = HttpUtility.UrlEncode("mypass");
parameters["loginTrue"] = HttpUtility.UrlEncode("extravalue");

這是標准方法,它可以直接將參數寫入請求流,也可以使用實用程序類(如StringContent 但是,由於您使用的是實用程序類FormUrlEncodedContent ,它會為您對其進行URL編碼,因此您不必這樣做。 在這種情況下,只需將它們直接分配為字符串即可:

parameters["userName"] = "myusername";
parameters["pwd"] = "mypass";
parameters["loginTrue"] = "extravalue";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM