LineBot -(3) ASP.NET Core + Ngrok + HttpClient

將之前的 LineBot 專案修改成 ASP.NET Core 練習 :

Line Bot -(1)在ASP.NET MVC 上使用 LineBot 回覆客戶傳的訊息

Line Bot -(2)使用 ngrok 讓 Visual Studio 可以回傳 Line Bot Api 訊息測試進行 Debug


使用 ngrok 出現 307 Temporary Redirect

是因為啟用了 SSL 後會自動把 Http 轉址到 Https,進入到專案,按右鍵屬性 > 偵錯 ,把 SSL 關閉即可


Controller 接收資料 :

            using (var ms = new MemoryStream())
            {
                await Request.Body.CopyToAsync(ms);

                string postData = Encoding.ASCII.GetString(ms.ToArray());
            }

改使用 HttpClient 回傳資料 

如果 httpRequestMessage 沒有設定正確會出現 :

Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.

            string s = JsonConvert.SerializeObject(replyMessage);
            byte[] bytes = Encoding.UTF8.GetBytes(s);
            ByteArrayContent byteContent = new ByteArrayContent(bytes);
            byteContent.Headers.Remove("Content-Type");
            byteContent.Headers.Add("Content-Type", "application/json");

            var httpRequestMessage = new HttpRequestMessage
            {
                Method = HttpMethod.Post,
                RequestUri = new Uri("https://api.line.me/v2/bot/message/reply"),
                Headers = {
                    { "Authorization", $"Bearer {channelAccessToken}" },
                },
                Content = byteContent
            };

            await httpClient.SendAsync(httpRequestMessage);
print

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *