Существует довольно много сообщений, связанных с API Twitter, но, похоже, никто не отвечает на мои вопросы напрямую.
Я знаю, как отправить запрос HttpWebRequest как POST.
Я вполне уверен, что мне нужно отправить веб-запрос на: "https://api.twitter.com/1/statuses/update.json" (не совсем ясно)
Я знаю, что есть много библиотек, которые все, что вам нужно сделать, это передать свои потребительские ключи и ключи токенов. Однако мне нужно создать очень короткий код в функции, которая просто отправляет жестко закодированную строку в Twitter. Когда я получу эту работу, жестко закодированная строка будет заменена переменной.
Мне не нужно обновлять статус или какую-либо информацию из Twitter. Просто ПОСТ "Hello World!" для начала, и я могу идти оттуда.
Я вынужден использовать VB.NET. Я использую Visual Studio Web Developer 2010.
Теперь, после всего сказанного, я посмотрел на порт C-Sharp Николаса Тарсии с кодом C-Sharp:
http://oauth.googlecode.com/svn/code/vbnet/oAuth.vb
Я могу примерно увидеть, что делают функции, посмотрев на них, но понятия не имею, какие из них мне нужно вызвать, чтобы создать веб-ответ и отправить в Twitter! Также я считаю, что этот код содержит больше, чем мне нужно. Если я просто хочу создать POST, то, скорее всего, мне понадобится только хэш-функция и функция nonce, а также мои токены и ключи. Это правильно? Если так, может кто-нибудь помочь мне сузить это? В процессе, помогая мне немного лучше понять, какой правильно сформированный веб-запрос нужно отправить в Twitter, чтобы сделать быстрый твит?
Спасибо
Будет
PS. Наконец-то я собрал некоторый код, основанный на просмотре документации OAuth, небольшом небольшом примере кода по использованию запроса POST в VB и инструменте OAuth в области Twitter для разработчиков, чтобы сгенерировать некоторую базовую строку для запроса. К сожалению, пока он компилируется и работает нормально, я не получаю твит. Может ли кто-нибудь взглянуть на код и увидеть, могут ли они обнаружить какие-либо явные проблемы? Очевидно, я заменил свои токены и потребительские ключи на «ххххх». Все, что я хочу на Рождество, - это запустить этот код и сделать быстрый твит на моем аккаунте в Twitter! ;)
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