2011-03-15 61 views
3

有没有人试过这个api?我在使用黑莓手机时遇到了一些麻烦。推文并不总是发送,我无法访问发布的推文。有没有人用过这个twitter api - http://www.twapime.com/

这里是我的代码 -

private void twitterSetup(){ 

     HttpRequest req = new HttpRequest("https://api.twitter.com/oauth/access_token"); 
     req.setMethod(HttpConnection.POST); 
     XAuthSigner signer = new XAuthSigner("", ""); 
     signer.signForAccessToken(req, "", ""); 
     try { 
     HttpResponse resp = req.send(); 
     if (resp.getCode() == HttpConnection.HTTP_OK) 
     { 
     Token accessToken = Token.parse(resp.getBodyContent()); 
     req.close(); 
     req = new HttpRequest("http://api.twitter.com/1/statuses/update.xml"); 
     req.setMethod(HttpConnection.POST); 
     req.setBodyParameter("status", "new message"); 
     req.setSigner(signer, accessToken); 
     resp = req.send(); 

     Tweet[] twts = null; 
     try { 

      Credential c = new Credential("","","",""); 
      UserAccountManager uam = UserAccountManager.getInstance(c); 
     List[] lists = null; 
      ListManager ter = null; 
      if (uam.verifyCredential()) { 
       ter = ListManager.getInstance(uam); //pode ser pela classe Timeline tambem. 

       ListManager listMngr = ListManager.getInstance(uam); 
       lists = listMngr.getLists(); 
       } 


      ter.startGetListTweets(lists[0], null, new SearchDeviceListener() { 
      public void searchCompleted() {} 
      public void searchFailed(Throwable cause) {} 
      public void tweetFound(Tweet tweet) { 
       System.out.println(tweet); 
      } 
      }); 

     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
     } 
     else { } 

     } catch (IOException e) { 
     e.printStackTrace(); 

     } 
     catch(Exception e){ 

     }finally { 
     try { 
     req.close(); 
     } catch (IOException e) {} 
     } 

    } 

感谢您的帮助。

+0

了一部分,我试图在其他以后发送相同的鸣叫。似乎Twitter不支持非独特的推文 – 2011-03-15 17:07:05

回答

0

好吧,

这里是类im用于获取基于类型和标记的twitter内容。方法getContent不是最优雅的,但它的工作原理。它只是下载并解析一个json文件。 看看这个工作的http://search.twitter.com/api/

public class GetTwitterContent implements Runnable { 

    private String tag; 
    private String type; 

    public GetTwitterContent(String type, String tag) { 
     this.type = type; 
     this.tag = tag; 
    } 

    public void run() { 

     try { 

      Hashtable twitterValuesHashtable = new Hashtable(); 
      String serviceUrl = ""; 

      if (type.equalsIgnoreCase(Constants.TWITTER_CONTENT_TYPE_HASHTAG)) { 
       serviceUrl = Constants.TWITTER_CONTENT_HASHTAG_CONTENT; 
      } else if (type.equalsIgnoreCase(Constants.TWITTER_CONTENT_TYPE_USER)) { 
       serviceUrl = Constants.TWITTER_CONTENT_USER_CONTENT; 
      } 

      ByteArrayOutputStream baos = getContent(serviceUrl + this.tag); 
      JSONObject jsonObject = new JSONObject(new String(baos.toByteArray(), 0, baos.size(), "utf-8")); 
      JSONArray jsonArray = jsonObject.getJSONArray("results"); 
      for (int counter = 0; counter < jsonArray.length(); ++counter) { 
       JSONObject thisJsonObject = (JSONObject) jsonArray.get(counter); 
       TwitterResponse twitterResponse = new TwitterResponse(); 
       twitterResponse.setCreatedAt(thisJsonObject.optString("created_at", "na")); 
       twitterResponse.setTweetText(thisJsonObject.optString("text","na")); 
       twitterResponse.setFromUser(thisJsonObject.optString("from_user", "na")); 
       twitterValuesHashtable.put(new Integer(counter),twitterResponse); 
      } 
      ServerContent.future.addContent(Constants.TWITTER_KEY, twitterValuesHashtable); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private ByteArrayOutputStream getContent(String url) { 

     ByteArrayOutputStream baos = null; 
     // len = 0; 
     try { 

      javax.microedition.io.HttpConnection connection = (javax.microedition.io.HttpConnection) Connector 
        .open(url); 
      connection.setRequestMethod(HttpConnection.GET); 
      // connection.setRequestProperty("Connection", "close"); 
      java.io.InputStream inputStream = connection.openDataInputStream(); 

      // inputStream = getClass().getResourceAsStream(url); 
      baos = new ByteArrayOutputStream(); 
      int c; 
      while (true) { 
       c = inputStream.read(); 
       if (c == -1) 
        break; 
       // ++len; 
       baos.write(c); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return baos; 
    } 

} 
相关问题