iT邦幫忙

0

Asp.net MVC 中 如何呼叫已知API應用?

有一隻公司的API是只要輸入職員帳號(ID)跟密碼(PW)就會回傳True/Flase

那我該如何在目前已有的ASP.NET網頁中寫一個網頁
達到員工在登入系統前輸入帳密來判斷?

2 個回答

0
小魚
iT邦高手 1 級 ‧ 2019-02-15 12:24:22

搜尋一下Ajax就可以,
這屬於JavaScript(jQuery)的部分,
跟ASP.NET MVC沒有直接關聯.

froce iT邦大師 6 級 ‧ 2019-02-15 15:42:47 檢舉

不用AJAX吧?用POST也能做啊,就傳回後傳到API認證,是的話進入系統,否的話跳回帳號輸入頁。

不過會問這個問題基本上前後端觀念還不夠清楚。

小魚 iT邦高手 1 級 ‧ 2019-02-15 16:58:08 檢舉

你意思是說用HttpRequest嗎??

froce iT邦大師 6 級 ‧ 2019-02-15 22:17:48 檢舉

我是不知道在asp是啥啦,反正form送出去就行了,不一定要用AJAX。
API只能傳True/Flase的應該不會是web api,在前端處理認證的話,這種簡單的回傳根本假造一下就永遠是登入狀態了。
所以應該是後端的API。

0
暐翰
iT邦大師 1 級 ‧ 2019-02-18 09:12:20

使用別人API應用來驗證帳號密碼,跟froce說的一樣,需要使用後台呼叫API

Json Post呼叫代碼如下:

public static class HttpClientHelper
{
	public static async Task PostByJsonContentTypeAsync(string url, object reqeustBody, Action<string> successFunction,Action<HttpRequestException> errorFunction, int timeout = 15)
	{
		var json = JsonConvert.SerializeObject(reqeustBody);

		using (var client = new HttpClient() { Timeout = TimeSpan.FromSeconds(timeout) })
		using (var request = new HttpRequestMessage(HttpMethod.Post, url))
		using (var stringContent = new StringContent(json, Encoding.UTF8, "application/json"))
		{
			request.Content = stringContent;
			try
			{
				using (var httpResponseMessage = await client.SendAsync(request))
				{
					HttpResponseMessage response = await client.GetAsync(url);
					response.EnsureSuccessStatusCode();

					var responseBody = await httpResponseMessage.Content.ReadAsStringAsync();
					successFunction(responseBody);
				}
			}
			catch (HttpRequestException e)
			{
				errorFunction(e);
			}
		}
	}
}

使用方式:

public class Program{
	public static async Task Main(string[] args)
	{
		//SuccessExecute
		await Execute("https://jsonplaceholder.typicode.com/posts", new { value = "ITWeiHan" }); //Result : {"value": "ITWeiHan","id": 101}
		//ErrorExecute
		await Execute("https://jsonplaceholder.typicode.com/error404", new { value = "ITWeiHan" }); //Result : Error 404
	}

	public static async Task Execute(string url, object reqeustBody)
	{
		await HttpClientHelper.PostByJsonContentTypeAsync(url, reqeustBody
			, successFunction: responsebody =>
			{
				//Your Success Logic
				Console.WriteLine("Success");
				Console.WriteLine(responsebody);
			}, errorFunction: httpRequestException =>
			{
				//Your Error Solution Logic
				Console.WriteLine("Error");
				Console.WriteLine(httpRequestException.Message);
			}
		);
	}
}

我要發表回答

立即登入回答