有相当多的Twitter API相关帖子,但没有一个可以直接回答我的问题。使用VB.NET为Twitter API创建webrequest POST
我知道如何发送一个HttpWebRequest作为POST。
我相当肯定,我需要的的WebRequest发送到:“https://api.twitter.com/1/statuses/update.json”(不完全清楚)
我知道有许多图书馆在那里,你所要做的就是传递消费者密钥和令牌密钥。但是,我需要在函数中创建一些非常短的代码,这个代码简单地向Twitter发布硬编码字符串。当我得到这个工作时,硬编码字符串将被变量替换。
我不需要状态更新或来自Twitter的任何类型的信息。只需发布“Hello World!”首先,我可以从那里开始。我不得不使用VB.NET。我使用Visual Studio的Web开发2010
现在,所有的说,我已经看过的C-夏普代码在这里尼古拉Tarzia的VB.NET端口: http://oauth.googlecode.com/svn/code/vbnet/oAuth.vb
我可以看到大概什么功能做通过看他们,但不知道哪些我需要调用创建一个webresponse并发送到Twitter!此外,我相信这个代码包含比我需要的更多。如果我只是想创建一个POST,那么可能我只需要散列函数和nonce函数以及我的令牌和密钥。是对的吗?如果是这样,有人可以帮我缩小这个范围吗?在这个过程中,帮助我更好地理解webrequest需要发送到Twitter才能快速发送Tweet?
感谢,
威尔
PS - 我终于凑齐了一些代码的基础上,望着OAuth的文件,在VB中使用POST请求一个整洁的小代码示例,以及Twitter的开发者区域的OAuth工具为请求生成一些基本字符串。不幸的是,虽然它编译和运行没问题,但我没有收到推文。有人可以看看代码,看看他们是否可以发现任何明显的问题?很明显,我用“xxxxx”替换了我的令牌和消费者密钥。我只想在圣诞节期间运行此代码,并在我的Twitter帐户上快速发送Tweet! ;)
Public Shared Function Tweet(strText As String) As Boolean
Dim boolResult As Boolean = False
Dim urlAddress As Uri = New Uri("https://api.twitter.com/1/statuses/update.json")
Dim strData As StringBuilder
Dim byteData() As Byte
Dim postStream As Stream = Nothing
Dim strConsumerKey As String = "xxxxxx"
Dim strConsumerSecret As String = "xxxxxx"
Dim strAccessToken As String = "xxxxxx"
Dim strAccessTokenSecret As String = "xxxxxx"
Dim objRequest As HttpWebRequest
Dim objResponse As HttpWebResponse = Nothing
Dim objReader As StreamReader
Dim objHeader As HttpRequestHeader = HttpRequestHeader.Authorization
Try
objRequest = DirectCast(WebRequest.Create(urlAddress), HttpWebRequest)
objRequest.Method = "POST"
objRequest.ContentType = "application/x-www-form-urlencoded"
strData = New StringBuilder()
strData.Append("&Hello_World%2521%3D%26oauth_consumer_key%3D" + strConsumerKey + "%26oauth_nonce%3Dda6bb8ce7e48547692f4854833afa680%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1329746260%26oauth_token%3D" + strAccessToken + "%26oauth_version%3D1.0")
objRequest.Headers.Add(objHeader, "Authorization: OAuth oauth_consumer_key=""xxxx"", oauth_nonce=""da6bb8ce7e48547692f4854833afa680"", oauth_signature=""xxxx"", oauth_signature_method=""HMAC-SHA1"", oauth_timestamp=""1329750426"", oauth_token=""xxxx"", oauth_version=""1.0""")
' Create a byte array of the data we want to send
byteData = UTF8Encoding.UTF8.GetBytes(strData.ToString())
' Set the content length in the request headers
objRequest.ContentLength = byteData.Length
Try
postStream = objRequest.GetRequestStream()
postStream.Write(byteData, 0, byteData.Length)
Finally
If Not postStream Is Nothing Then postStream.Close()
End Try
boolResult = True
Catch ex As Exception
boolResult = False
HttpContext.Current.Session.Add("Error", ex.ToString())
End Try
Try
' Get response
objResponse = DirectCast(objRequest.GetResponse(), HttpWebResponse)
' Get the response stream into a reader
objReader = New StreamReader(objResponse.GetResponseStream())
' Console application output
Console.WriteLine(objReader.ReadToEnd())
Finally
If Not objResponse Is Nothing Then objResponse.Close()
End Try
Return boolResult
End Function
如果使用的是尼古拉斯·Tarzia代码会工作,我会很感激,作为响应/应答。我在dev.twitter.com上使用OAuth构建工具来创建上面的请求字符串,这可能是问题所在。 Tarzia代码确实创建了一个基本字符串。我将在这里尝试用下一个来代替回答。提前致谢。 :) – WillShakes 2012-02-20 15:15:26
好吧 - 我发现了一些C#代码,看起来完全符合我的要求,但是当我使用VB时,必须先进行移植并将其移植。请参阅我的移植代码和评论:[Code Project](http://www.codeproject.com/Articles/247336/Twitter-OAuth-authentication-using-Net?msg = 4162685#xx4162685xx) – WillShakes 2012-02-21 10:02:52
只是为了澄清,我认为我几乎在那里 - 我从远程服务器(twitter)得到401未经授权的响应。所以试图找出问题是否与我的代码移植,或者可能在Twitter上的设置(我已设置为在我的应用程序上读/写)......任何VB大师的外面? ;) – WillShakes 2012-02-21 10:06:03