ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 389|ตอบกลับ: 0

[VB.NET] การทำ Line Notify และอัพโหลดรูปภาพจากตัวโปรแกรม ด้วยการใช้คำสั่ง cURL

[คัดลอกลิงก์]

213

กระทู้

301

โพสต์

2407

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
2407



cURL หรือ Client URL คือ Command Line Tools และ Library ใช้คำสั่งหรือสคริปสำหรับส่งค่าสำหรับการถ่ายโอนข้อมูลในรูปแบบ URL Syntax รวมถึงยังสนับสนุน Protocol อื่นๆ เช่น HTTP, FTP เป็นต้น ซึ่งนิยมใช้เพื่อทดสอบการ Request, Response หน้าเว็บเพจเพื่อตรวจสอบ Header และทดสอบการเรียก Webservice WSDL ของผู้ให้บริการเป็นต้น ... รายละเอียดไปหาศึกษาเพิ่มเติมด้วยล่ะกันครับ ...

ดาวน์โหลด cURL สำหรับ Windows ทั้ง 32 บิตและ 64 บิต ... เมื่อดาวน์โหลดเรียบร้อยให้แตกไฟล์ออกมา แล้วไปที่โฟลเดอร์ Bin จะมีอยู่ 3 ไฟล์ ต้องนำไฟล์ทั้ง 3 ตัวของ cURL ไปเก็บไว้ในโฟลเดอร์ Bin\debug หรือ Release ... กรณีที่ Publish ไปใช้เครื่องอื่นก็ต้องนำไปเก็บไว้ที่ EXE อยู่ด้วย


มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. ' / --------------------------------------------------------------------------------
  2. ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
  3. ' / eMail : [email protected]
  4. ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
  5. ' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
  6. ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
  7. ' / Purpose: Line Notify and upload images with VB.NET (2010)
  8. ' / Microsoft Visual Basic .NET (2010)
  9. ' /
  10. ' / This is open source code under @Copyleft by Thongkorn Tubtimkrob.
  11. ' / You can modify and/or distribute without to inform the developer.
  12. ' / --------------------------------------------------------------------------------
  13. Imports System.Net
  14. Imports System.Text
  15. Imports System.IO

  16. Public Class frmLineNotify
  17.     Dim streamPic As Stream     '// Use Steam instead IO.
  18.     Dim PicturePath As String = MyPath(Application.StartupPath) & "Images"
  19.     '//
  20.     Dim FullPathFileName As String = String.Empty
  21.     '// YOUR TOKEN
  22.     Const strToken As String = "YOUR TOKEN"

  23.     Private Sub frmLineNotify_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  24.         txtMessage.Text = "ทดสอบการส่ง Line Notify จากคุณทองก้อน นารีแขยง"
  25.         picData.Image = Image.FromFile(PicturePath & "NoImage.gif")
  26.     End Sub

  27.     Private Sub btnSend_Click(sender As System.Object, e As System.EventArgs) Handles btnSend.Click
  28.         If String.IsNullOrEmpty(txtMessage.Text.Trim) Then
  29.             MessageBox.Show("Nothing message to send.", "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  30.             Return
  31.         End If
  32.         Try
  33.             Cursor.Current = Cursors.WaitCursor
  34.             System.Net.ServicePointManager.Expect100Continue = False
  35.             Dim Request = DirectCast(WebRequest.Create("https://notify-api.line.me/api/notify"), HttpWebRequest)
  36.             '// Message to Line.
  37.             Dim LineMessage = String.Format("message={0}", txtMessage.Text & vbCrLf & "วันที่ - เวลา : " & FormatDateTime(Now(), DateFormat.GeneralDate))
  38.             '// Sticker
  39.             LineMessage += "&stickerPackageId=1" & "&stickerId=109"

  40.             Dim MyData = Encoding.UTF8.GetBytes(LineMessage)
  41.             Request.Method = "POST"
  42.             '// Initialize
  43.             With Request
  44.                 .ContentType = "application/x-www-form-urlencoded"
  45.                 .ContentLength = MyData.Length
  46.                 '// Change your Token and don't cut "Bearer".
  47.                 .Headers.Add("Authorization", "Bearer " & strToken)
  48.                 .AllowWriteStreamBuffering = True
  49.                 .KeepAlive = False
  50.                 .Credentials = CredentialCache.DefaultCredentials
  51.             End With
  52.             '//
  53.             Using Stream = Request.GetRequestStream()
  54.                 Stream.Write(MyData, 0, MyData.Length)
  55.             End Using
  56.             Dim response = DirectCast(Request.GetResponse(), HttpWebResponse)
  57.             Dim responseString = New StreamReader(response.GetResponseStream()).ReadToEnd()

  58.             '//
  59.             If FullPathFileName.Trim <> "" Or FullPathFileName.Length <> 0 Then Call SendPicture()

  60.         Catch ex As Exception
  61.             MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
  62.         Finally
  63.             Cursor.Current = Cursors.Default
  64.         End Try
  65.     End Sub

  66.     Sub SendPicture()
  67.         '// Format
  68.         '// " -X POST -H "Authorization: Bearer TOKEN" -F "message=Send Picture" -F "[email protected]:\Sample.jpg" https://notify-api.line.me/api/notify"
  69.         Try
  70.             Dim arg As String = String.Empty
  71.             arg &= " -X POST -H "
  72.             arg &= """Authorization: Bearer " & strToken & """"
  73.             arg &= " -F ""message=" & "Send Picture" & """"
  74.             arg &= " -F ""[email protected]" & FullPathFileName.Trim & """ https://notify-api.line.me/api/notify"
  75.             ShellandWait("curl.exe", arg)
  76.             '//
  77.             picData.Image = Image.FromFile(PicturePath & "NoImage.gif")
  78.             FullPathFileName = String.Empty
  79.         Catch ex As Exception
  80.             MessageBox.Show("Error", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
  81.         End Try
  82.     End Sub

  83.     Public Sub ShellandWait(ByVal ProcessPath As String, ByVal Arguments As String)
  84.         Dim objProcess As System.Diagnostics.Process
  85.         Try
  86.             objProcess = New System.Diagnostics.Process()
  87.             objProcess.StartInfo.Arguments = Arguments
  88.             objProcess.StartInfo.FileName = ProcessPath
  89.             objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  90.             objProcess.Start()
  91.             Application.DoEvents()
  92.             objProcess.WaitForExit()
  93.             Application.DoEvents()
  94.             Console.WriteLine(objProcess.ExitCode.ToString())
  95.             objProcess.Close()

  96.         Catch ex As Exception
  97.             MessageBox.Show(ex.Message)
  98.         End Try
  99.     End Sub

  100.     Private Sub btnClose_Click(sender As System.Object, e As System.EventArgs) Handles btnClose.Click
  101.         Me.Close()
  102.     End Sub

  103.     Private Sub frmLineNotify_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  104.         Me.Dispose()
  105.         Application.Exit()
  106.     End Sub

  107.     Private Sub btnBrowse_Click(sender As System.Object, e As System.EventArgs) Handles btnBrowse.Click
  108.         Dim dlgImage As OpenFileDialog = New OpenFileDialog()

  109.         ' / Open File Dialog
  110.         With dlgImage
  111.             '.InitialDirectory = PicturePath 'PicturePath
  112.             .Title = "Select your image file"
  113.             .Filter = "Image (*.jpg;*.png;*.gif;*.bmp)|*.jpg;*.png;*.gif;*.bmp"
  114.             .FilterIndex = 1
  115.             .RestoreDirectory = True
  116.         End With
  117.         '/ Select OK after Browse ...
  118.         If dlgImage.ShowDialog() = DialogResult.OK Then
  119.             FullPathFileName = dlgImage.FileName
  120.             picData.Image = Image.FromFile(FullPathFileName)
  121.         End If
  122.     End Sub

  123.     ' / -----------------------------------------------------------------------------
  124.     ' / Use Steam instead IO.
  125.     ' / -----------------------------------------------------------------------------
  126.     Sub ShowPicture(PicName As String)
  127.         Dim imgDB As Image
  128.         ' Get the name of the image file.
  129.         If PicName.ToString <> "" Then
  130.             ' Verify that the image file meets the specified location.
  131.             If System.IO.File.Exists(PicturePath & PicName.ToString) Then
  132.                 '/ Because when deleting the image file is locked, it can not be removed.
  133.                 '/ The file is closed after the image is loaded, so you can delete the file if you need.
  134.                 streamPic = File.OpenRead(PicturePath & PicName.ToString)
  135.                 imgDB = Image.FromStream(streamPic)
  136.                 picData.Image = imgDB
  137.             Else
  138.                 '/ No images.
  139.                 streamPic = File.OpenRead(PicturePath & "NoImage.gif")
  140.                 imgDB = Image.FromStream(streamPic)
  141.                 picData.Image = imgDB
  142.             End If

  143.             ' Is null
  144.         Else
  145.             streamPic = File.OpenRead(PicturePath & "NoImage.gif")
  146.             imgDB = Image.FromStream(streamPic)
  147.             picData.Image = imgDB
  148.         End If
  149.         '//
  150.         streamPic.Dispose()
  151.     End Sub

  152.     ' / Get my project path
  153.     ' / AppPath = C:\My Project\bin\debug
  154.     ' / Replace "\bin\debug" with ""
  155.     ' / Return : C:\My Project\
  156.     Function MyPath(ByVal AppPath As String) As String
  157.         '/ MessageBox.Show(AppPath);
  158.         AppPath = AppPath.ToLower()
  159.         '/ Return Value
  160.         MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "").Replace("\bin\x86\release", "")
  161.         '// If not found folder then put the \ (BackSlash) at the end.
  162.         If Microsoft.VisualBasic.Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
  163.     End Function

  164.     Private Sub btnDeleteImg_Click(sender As System.Object, e As System.EventArgs) Handles btnDeleteImg.Click
  165.         picData.Image = Image.FromFile(PicturePath & "NoImage.gif")
  166.         FullPathFileName = String.Empty
  167.     End Sub
  168. End Class
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

41

โพสต์

193

เครดิต

Member

Rank: 2

เครดิต
193
โพสต์ 2019-10-31 14:57:24 | ดูโพสต์ทั้งหมด

ขอบพระคุณอย่างสูงครับ อาจารย์

3

กระทู้

12

โพสต์

59

เครดิต

Member

Rank: 2

เครดิต
59
โพสต์ 2019-11-19 09:17:49 | ดูโพสต์ทั้งหมด

ขอบพระคุณครับ อาจารย์
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2020-1-21 12:08 , Processed in 0.535814 second(s), 4 queries , File On.

Powered by Discuz! X3.3 R20170401, Rev.54

© 2001-2017 Comsenz Inc.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้