2017-08-18 33 views
0

我看到一個網頁,有<form name="formName" ng-submit=...,我很好奇,如果有一種方式登錄到C#.Net網站。可能使用C#來模擬AngularJS登錄提交像Post?

我熟悉使用c#發送包括HttpClient PostAsync在內的「Post」數據,但是我很難搜索這個,因爲每篇文章都談論了一個angularjs控制器或者從一個angularjs頁面轉到其他頁面。即使指出正確的方向將是非常有益的!

實例後,我發現

var client = new HttpClient(); 
var pairs = new List<KeyValuePair<string, string>> 
    { 
     new KeyValuePair<string, string>("pqpUserName", "admin"), 
     new KeyValuePair<string, string>("password", "[email protected]") 
    }; 
var content = new FormUrlEncodedContent(pairs); 
var response = client.PostAsync("youruri", content).Result; 
if (response.IsSuccessStatusCode) 
{ 
} 
+0

我認爲你需要跟蹤碼多一點,看看有什麼'NG-submit'實際上做。或者,您可以在Chrome瀏覽器中查看「網絡」活動,以查看頁面是否正在對服務器執行「POST」調用。從那裏你可以找到信息來複制'REST'調用。只有這樣你才能考慮從你的'C#'應用程序做同樣的事情。 –

+0

謝謝你的信息。跟蹤一下代碼,看看ng-submit實際上做了什麼......通過這個,你的意思是保持chrome開發者工具的開放性?我想我明白你在說什麼......我沒有使用Angular的經驗或追蹤其他人的電話,但對於我的生活而言,找不到一篇文章談論這麼做。我會嘗試更多地使用它,看看我能否看到更多信息...再次感謝您! –

回答

0

首先,它實現與Using聲明IDisposible接口包裝類。這是一個很好的功能,並確保在您的代碼完成時調用資源配置方法。

爲了使這項工作,不知道實際的身份驗證類型,但我想你在這裏運行帶載體令牌,你也需要在URL中傳遞grant_type。

嘗試像這樣

var postData ="grant_type=password&pqpUserName=admin&[email protected]"; 

using (var httpClient = new HttpClient()) 
{ 
    using (var content = new FormUrlEncodedContent(postData)) 
    { 
     content.Headers.Clear(); 
     content.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); 
     var response = await httpClient.PostAsync("youruri", content); 
     var apiResponse = await response.Content.ReadAsAsync<TResult>(); 
    } 
} 
+0

1.我意識到使用聲明,但我懶惰和踩新水,但我真的認爲這是很好,你指出:)謝謝 2.有沒有辦法告訴哪種認證類型網站正在使用從查看源?

+0

probably沒有幫助,但這裏有一些其他標籤

再次感謝您 –