2011-08-10 1 views
0

Je suis nouveau au développement d'applications mobiles. Je développe une application Blackberry qui lit les tweets de la chronologie de l'utilisateur. Jusqu'à présent, j'ai réussi à obtenir le jeton d'accès OAuth. Le problème se produit lorsque j'essaie d'utiliser ce jeton d'accès pour lire les tweets. Je reçois une réponse 401 avec un message "Non autorisé". Je n'utilise pas de bibliothèques, je fais tout par moi-même. Quelqu'un pourrait-il m'aider avec ça?réponse 401 lors de la lecture des tweets

Merci,

Voici le code:

  HttpConnectionFactory factory = new HttpConnectionFactory(url, 
       HttpConnectionFactory.TRANSPORT_WIFI | 
       HttpConnectionFactory.TRANSPORT_WAP2 | 
       HttpConnectionFactory.TRANSPORT_BIS | 
       HttpConnectionFactory.TRANSPORT_BES | 
       HttpConnectionFactory.TRANSPORT_DIRECT_TCP); 

     httpConn = factory.getNextConnection(); 
     httpConn.setRequestMethod(HttpProtocolConstants.HTTP_METHOD_GET); 
     httpConn.setRequestProperty("WWW-Authenticate","OAuth realm=http://twitter.com/"); 
     httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     httpConn.setRequestProperty("Content-Length", Integer.toString(header.getBytes().length)); 
     os = httpConn.openOutputStream(); 

     os.write(header.getBytes()); 
     os.close(); 
     os = null; 


     input = httpConn.openDataInputStream(); 
     int resp = httpConn.getResponseCode(); 

    // Dialog.alert(httpConn.getDate()+" : "+System.currentTimeMillis()); 


     if (resp == HttpConnection.HTTP_OK) { 

      XMLReader parser; 
      try { 
       parser = XMLReaderFactory.createXMLReader(); 
       parser.setContentHandler(this); 
       parser.parse(new InputSource(input)); 
       for(int i=0 ; i<2 ; i++) 
       { 
        tweets.addElement(parser.getProperty("text").toString()); 
        Dialog.alert(parser.getProperty("text").toString()); 
       } 

      } catch (SAXException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      Dialog.alert("your tweet was posted successfully :)"); 
     } 
     Dialog.alert(httpConn.getResponseCode()+": "+httpConn.getResponseMessage()); 
     return (httpConn.getResponseCode()+": "+httpConn.getResponseMessage()); 
    } catch (IOException e) { 
     return "exception"; 
    } catch (NoMoreTransportsException nc) { 
     return "noConnection"; 
    } finally { 
     try { 
      httpConn.close(); 
      input.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

Postez votre code s'il vous plaît. – Jacob

+0

J'ai inclus le code – Alia

+0

Pourquoi n'essayez-vous pas d'utiliser une lib? Cela simplifierait grandement votre travail. J'ai utilisé celui-ci sur mon application BB http://twitter4j.org/en/index.html – 8vius

Répondre

0

Je ne suis pas un expert en OAuth, mais juste une note:

Ce:

httpConn.setRequestMethod(HttpProtocolConstants.HTTP_METHOD_GET); 

et ce :

httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

sont mutuellement exclusifs. Vous publiez des données sur le serveur, ce devrait donc être un POST (pas GET).

Questions connexes