有没有人用过这个twitter api - http://www.twapime.com/

时间:2011-03-15 15:06:08

标签: java blackberry java-me

有人试过这个api吗?我在BlackBerry上实现它时遇到了一些麻烦。推文并不总是发送,我无法访问发布的推文。

这是我的代码 -

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) {}
        } 

    }

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

确定,

这是我用来获取基于类型和标签的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;
    }

}