POSTAR STATUS NOVA API TWITTER

WCOSTA 31/01/2016 15:44:15
#456776
Boa tarde pessoal,
Abaixo segue o código que estou tentando implementar para postagem de mensagens no Twitter e cada status com no máximo 120 caracteres, menos que Twitter permite, mas recebo como resposta do WebResponse o Erro 400, já procurei e rodei em vários fórums, internacionais e nada. Alguém poderia me ajudar. Os valores XXXX estão sendo usados devido ao serem de uso restrito do desenvolvedor e não são públicos.
  Module mTwitter
Public Sub TwitterPostStatus(ByVal status As String)
Try

status = status & [Ô]Acesse: www.expedicaocientifica.com.br[Ô]
Dim oauth_token As String = [Ô]XXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXX[Ô]
Dim oauth_token_secret As String = [Ô]XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[Ô]
Dim oauth_consumer_key As String = [Ô]XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[Ô]
Dim oauth_consumer_secret As String = [Ô]XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx[Ô]
Dim oauth_version As String = [Ô]1.0[Ô]
Dim oauth_signature_method As String = [Ô]HMAC-SHA1[Ô]
Dim oauth_nonce 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 oauth_timestamp As String = Convert.ToInt64(timeSpan.TotalSeconds).ToString
Dim resource_url As String = [Ô]https://api.twitter.com/1.1/statuses/update.json[Ô]
Dim baseFormat As String = ([Ô]oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}[Ô] + [Ô]&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&status={6}[Ô])
Dim baseString As String = String.Format(baseFormat, oauth_consumer_key, oauth_nonce, oauth_signature_method, oauth_timestamp, oauth_token, oauth_version, Uri.EscapeDataString(status))

baseString = String.Concat([Ô]POST&[Ô], Uri.EscapeDataString(resource_url), [Ô]&[Ô], Uri.EscapeDataString(baseString))

Dim compositeKey As String = String.Concat(Uri.EscapeDataString(oauth_consumer_secret), [Ô]&[Ô], Uri.EscapeDataString(oauth_token_secret))

Dim oauth_signature As String
Using hasher As HMACSHA1 = New HMACSHA1(ASCIIEncoding.ASCII.GetBytes(compositeKey))
oauth_signature = Convert.ToBase64String(
hasher.ComputeHash(ASCIIEncoding.ASCII.GetBytes(baseString)))
End Using
Dim headerFormat As String = ([Ô]OAuth oauth_nonce=[Ô][Ô]{0}[Ô][Ô], oauth_signature_method=[Ô][Ô]{1}[Ô][Ô], [Ô] + ([Ô]oauth_timestamp=[Ô][Ô]{2}[Ô][Ô], oauth_consumer_key=[Ô][Ô]{3}[Ô][Ô], [Ô] + ([Ô]oauth_token=[Ô][Ô]{4}[Ô][Ô], oauth_signature=[Ô][Ô]{5}[Ô][Ô], [Ô] + [Ô]oauth_version=[Ô][Ô]{6}[Ô][Ô][Ô][Ô][Ô])))
Dim authHeader As String = String.Format(headerFormat,
Uri.EscapeDataString(oauth_nonce),
Uri.EscapeDataString(oauth_signature_method),
Uri.EscapeDataString(oauth_timestamp),
Uri.EscapeDataString(oauth_consumer_key),
Uri.EscapeDataString(oauth_token),
Uri.EscapeDataString(oauth_signature),
Uri.EscapeDataString(oauth_version)
)
Dim postBody As String = ([Ô]status=[Ô] + Uri.EscapeDataString(status))
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = CType(WebRequest.Create(resource_url), HttpWebRequest)
request.Headers.Add([Ô]Authorization[Ô], authHeader)
request.Method = [Ô]POST[Ô]
request.ContentType = [Ô]application/x-www-form-urlencoded[Ô]
Using stream As Stream = request.GetRequestStream
Dim content As Byte() = ASCIIEncoding.ASCII.GetBytes(postBody)
stream.Write(content, 0, content.Length)
End Using
[ô]MsgBox(headerFormat, MsgBoxStyle.Information)
Dim response As WebResponse = request.GetResponse()

Catch ex As Exception
ErrorView(ex)
End Try
End Sub
End Module
KERPLUNK 31/01/2016 20:28:07
#456790
Resposta escolhida
Erro 400 é Bad Request. Não estou vendo uma serialização aí...
Experimente testar esse ou esse exemplo.
MOUSER 23/02/2016 17:16:21
#458108
WCOSTA deu certo?
WCOSTA 13/03/2016 20:54:21
#459104
Estive ausente por conta de outros trabalhos e agora de volta testar.
WCOSTA 13/03/2016 22:59:27
#459107
Pessoal Revendo meu código, achei o erro e funcionou perfeitamente:
Era Assim (parte que gerava erro 400
 Dim headerFormat As String = ([Ô]OAuth oauth_nonce=[Ô][Ô]{0}[Ô][Ô], oauth_signature_method=[Ô][Ô]{1}[Ô][Ô], [Ô] + ([Ô]oauth_timestamp=[Ô][Ô]{2}[Ô][Ô], oauth_consumer_key=[Ô][Ô]{3}[Ô][Ô], [Ô] + ([Ô]oauth_token=[Ô][Ô]{4}[Ô][Ô], oauth_signature=[Ô][Ô]{5}[Ô][Ô], [Ô] + [Ô]oauth_version=[Ô][Ô]{6}[Ô][Ô][Ô][Ô][Ô])))


Tirei duas aspas depois do número 6 e pimba, funcionou
 Dim headerFormat As String = ([Ô]OAuth oauth_nonce=[Ô][Ô]{0}[Ô][Ô], oauth_signature_method=[Ô][Ô]{1}[Ô][Ô], [Ô] + ([Ô]oauth_timestamp=[Ô][Ô]{2}[Ô][Ô], oauth_consumer_key=[Ô][Ô]{3}[Ô][Ô], [Ô] + ([Ô]oauth_token=[Ô][Ô]{4}[Ô][Ô], oauth_signature=[Ô][Ô]{5}[Ô][Ô], [Ô] + [Ô]oauth_version=[Ô][Ô]{6}[Ô][Ô][Ô]))) 

Na verdade o código original está em C# e acredito que no momento da adaptação para VB.Net o erro ocorreu.
De qualquer forma pontuarei o amigo KERPLUNK, por apresentar outros dois códigos, que funcionam.
Tópico encerrado , respostas não são mais permitidas