Ich versuche, den Streaming-API-Filter in meiner .net-Webseite aufzurufen.Aufruf der Twitter-Streaming-API (Status/Filter) von der Webseite vb.net
habe ich eine App auf Twitter erstellen und nahm die benötigten Zugangsdaten (Consumer-Key, Consumer-Secret, Zugriffstoken und Zugriffstoken Geheimnis)
Dies ist der Code
Public Function StreamAPI()
Dim url As String = "https://stream.twitter.com/1.1/statuses/filter.json?track=example.com/example"
Dim oauthconsumerkey As String = "consumerkey"
Dim oauthconsumersecret As String = "consumersecret"
Dim oauthsignaturemethod As String = "HMAC-SHA1"
Dim oauthversion As String = "1.0"
Dim oauthtoken As String = "token"
Dim oauthtokensecret As String = "tokenkey"
Dim oauthnonce As String = Convert.ToBase64String(New ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()))
Dim timeSpan As TimeSpan = DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0, _
0, DateTimeKind.Utc)
Dim oauthtimestamp As String = Convert.ToInt64(timeSpan.TotalSeconds).ToString()
Dim basestringParameters As New SortedDictionary(Of String, String)()
basestringParameters.Add("track", "example.com/example")
basestringParameters.Add("oauth_version", oauthversion)
basestringParameters.Add("oauth_consumer_key", oauthconsumerkey)
basestringParameters.Add("oauth_nonce", oauthnonce)
basestringParameters.Add("oauth_signature_method", oauthsignaturemethod)
basestringParameters.Add("oauth_timestamp", oauthtimestamp)
basestringParameters.Add("oauth_token", oauthtoken)
Dim baseString As New StringBuilder()
baseString.Append("GET" + "&")
baseString.Append(EncodeCharacters(Uri.EscapeDataString(url.Split("?"c)(0)) + "&"))
For Each entry As KeyValuePair(Of String, String) In basestringParameters
baseString.Append(EncodeCharacters(Uri.EscapeDataString(entry.Key + "=" + entry.Value + "&")))
Next
Dim finalBaseString As String = baseString.ToString().Substring(0, baseString.Length - 3)
Dim signingKey As String = EncodeCharacters(Uri.EscapeDataString(oauthconsumersecret)) + "&" + EncodeCharacters(Uri.EscapeDataString(oauthtokensecret))
'Sign the request
Dim hasher As New HMACSHA1(New ASCIIEncoding().GetBytes(signingKey))
Dim oauthsignature As String = Convert.ToBase64String(hasher.ComputeHash(New ASCIIEncoding().GetBytes(finalBaseString)))
Dim webRequest__1 As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
Dim authorizationHeaderParams As New StringBuilder()
authorizationHeaderParams.Append("OAuth ")
authorizationHeaderParams.Append("oauth_nonce=" + """" + Uri.EscapeDataString(oauthnonce) + """,")
authorizationHeaderParams.Append("oauth_signature_method=" + """" + Uri.EscapeDataString(oauthsignaturemethod) + """,")
authorizationHeaderParams.Append("oauth_timestamp=" + """" + Uri.EscapeDataString(oauthtimestamp) + """,")
authorizationHeaderParams.Append("oauth_consumer_key=" + """" + Uri.EscapeDataString(oauthconsumerkey) + """,")
If Not String.IsNullOrEmpty(oauthtoken) Then
authorizationHeaderParams.Append("oauth_token=" + """" + Uri.EscapeDataString(oauthtoken) + """,")
End If
authorizationHeaderParams.Append("oauth_signature=" + """" + Uri.EscapeDataString(oauthsignature) + """,")
authorizationHeaderParams.Append("oauth_version=" + """" + Uri.EscapeDataString(oauthversion) + """")
webRequest__1.Headers.Add("Authorization", authorizationHeaderParams.ToString)
webRequest__1.Method = "GET"
webRequest__1.ContentType = "application/x-www-form-urlencoded"
webRequest__1.Timeout = 3 * 60 * 1000
Try
Dim webResponse As HttpWebResponse = TryCast(webRequest__1.GetResponse(), HttpWebResponse)
Dim dataStream As System.IO.Stream = webResponse.GetResponseStream()
' Open the stream using a StreamReader for easy access.
Dim reader As New StreamReader(dataStream)
' Read the content.
Dim responseFromServer As String
responseFromServer = reader.ReadToEnd()
Return responseFromServer
Catch ex As Exception
End Try
End Function
Die Funktion doesnt ist mit alles zurückgeben. In der Zeile, die reader.ReadToEnd()
im Debug-Modus enthält, wird "Ausdruck kann nicht ausgewertet werden" angezeigt.
Der gleiche Code funktioniert ordnungsgemäß, wenn die URL in diesem Format ist https://api.twitter.com/1.1/application/rate_limit_status.json oder https://api.twitter.com/1.1/search/tweets.json?q=example
Gibt es Gründe, warum es nicht für Strom apis funktioniert? Ich kann die Such-API nicht verwenden, da sie nicht alle Ergebnisse liefert, die ich brauche, zum Beispiel werden Tweets, die URLs enthalten, von der Such-API nicht zurückgegeben.
Ich habe versucht Tweeteinvi-Bibliothek für. NET-Projekte wie von Twitter-Website vorgeschlagen.
Public Sub Twit()
Dim oauthconsumerkey As String = "consumerkey"
Dim oauthconsumersecret As String = "consumersecret"
Dim oauthsignaturemethod As String = "HMAC-SHA1"
Dim oauthversion As String = "1.0"
Dim oauthtoken As String = "token"
Dim oauthtokensecret As String = "tokensecret"
Auth.SetUserCredentials(oauthconsumerkey, oauthconsumersecret, oauthtoken, oauthtokensecret)
Auth.ApplicationCredentials = New TwitterCredentials(oauthconsumerkey, oauthconsumersecret, oauthtoken, oauthtokensecret)
Dim filteredStream = Tweetinvi.Stream.CreateFilteredStream()
filteredStream.AddTrack("example")
Dim txt As String = ""
AddHandler filteredStream.MatchingTweetReceived, Sub(sender As Object, args As Tweetinvi.Core.Events.EventArguments.MatchedTweetReceivedEventArgs)
Console.WriteLine(args.Tweet.Text)
txt &= args.Tweet.Text
End Sub
filteredStream.StartStreamMatchingAllConditions()
End Sub
Aber das bringt nichts zurück. Das Ereignis wird nicht aufgerufen und ich bekomme kein Ergebnis.
Beide Methoden fehlgeschlagen. Gibt es ein anderes klares Beispiel, das ich verwenden kann, um Status/Filter von vb.net Webseiten aufzurufen?
Mit Twetinvi bekomme ich keine Ausnahmen, der Code tut einfach nichts. Ich habe Async-Funktion hinzugefügt, aber immer noch das Gleiche. Diese Funktion wird bei page_load auf einer Webseite aufgerufen. Kannst du ein codiertes Beispiel geben, wie man die Strean-Tweets bekommt, um sie zu überprüfen und zu durchlaufen? – Mahag
Ich werde es mir ansehen, ich weiß, ich habe ein Beispiel irgendwo. – Linvi