Hello,
I am trying to create a simple application for personal use for Twitter marketing. This is my first time trying to interact with REST APIs through VB and I have been going around and round getting various different errors.
Here is my current code and I get a '401 Unauthorised' error;
'---------------------------
TwitterApp
System.Net.WebException: The remote server returned an error: (401) Unauthorized.
at System.Net.HttpWebRequest.GetResponse()
at TwitterApp.Form1.Form1_Load(Object sender, EventArgs e) in C:\Users\User\AppData\Local\Temporary Projects\TwitterApp\Form1.vb:line 50
OK
'
Here's my code, no idea how right it is...
`Imports System.Net
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader
Dim address As Uri
Dim data As StringBuilder
Dim byteData() As Byte
Dim postStream As Stream = Nothing
' Set the REST API URL
address = New Uri("https://api.twitter.com/oauth/request_token")
' Create the web request
request = DirectCast(WebRequest.Create(address), HttpWebRequest)
' Set type to POST
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
' Create the data we want to send (each data.Append is for specific paramater data)
data = New StringBuilder()
data.Append("oauth_callback=" + WebUtility.UrlEncode("http%3A%2F%2Flocalhost%2Fsign-in-with-twitter%2F"))
data.Append("&oauth_consumer_key=" + WebUtility.UrlEncode("cChZNFj6T5R0TigYB9yd1w"))
data.Append("&oauth_nonce=" + WebUtility.UrlEncode("ea9ec8429b68d6b77cd5600adbbb0456"))
data.Append("&oauth_signature=" + WebUtility.UrlEncode("F1Li3tvehgcraF8DMJ7OyxO4w9Y%3D"))
data.Append("&oauth_signature_method=" + WebUtility.UrlEncode("HMAC-SHA1"))
data.Append("&oauth_timestamp=" + WebUtility.UrlEncode("1318467427"))
data.Append("&oauth_version=" + WebUtility.UrlEncode("1.0"))
' Create a byte array of the data we want to send
byteData = UTF8Encoding.UTF8.GetBytes(data.ToString())
' Set the content length in the request headers
request.ContentLength = byteData.Length
' Write data
Try
postStream = request.GetRequestStream()
postStream.Write(byteData, 0, byteData.Length)
Finally
If Not postStream Is Nothing Then postStream.Close()
End Try
Try
' Get response
response = DirectCast(request.GetResponse(), HttpWebResponse)
' Get the response stream into a reader
reader = New StreamReader(response.GetResponseStream())
' Console application output
Console.WriteLine(reader.ReadToEnd())
Catch ex As Exception
' Update form textbox in threadsafe manner that posting to API failed
'SetTextBoxText_ThreadSafe(Me.logTxtBox, "Error contacting server to update client data." + vbCrLf)
MsgBox(ex.ToString())
Finally
If Not response Is Nothing Then response.Close()
End Try
End Sub
End Class
`
Any help would be great, thanks!