130 likes | 325 Views
北京理工大学本科生毕业设计答辩. JWeiBo : an SDK Solution for Sina WeiBo RESTful Open API. Date: 06/08/2011. Mentor: Dai Yintao. Student : Deng Litao . Outline. Background Related work Requirement Design Implementation Sample codes Future work. Background. Microblogging’s characters.
E N D
北京理工大学本科生毕业设计答辩 JWeiBo: an SDK Solution for Sina WeiBo RESTful Open API Date: 06/08/2011 Mentor: Dai Yintao Student:Deng Litao
Outline Background Related work Requirement Design Implementation Sample codes Future work
Background Microblogging’s characters Microblogging’s bombing development Increasing demands for third-party applications.
Background RESTful Web Services • 1: The base URL (or URI) for the Web Services. • 2: The Internet media type for the data supported by the Web Services, XML and JSON. • 3: The set of operations of HTTP methods defined on the resources, such as GET, POST, PUT and DELETE.
Related Work JWeiBo’s role 1: Request from outside. 2: Data demand from Controller to Model. 3: Data interchange between application and Sina WeiBo. 4: Data from Model to Controller. 5: Data from Controller to View. 6: Response to outside.
Requirement Function Data flow in swim lane 1: The request parameters could be viewed as the input. 2: Initializing the HTTP call. 3: Invoke the HTTP call by specified scheme. Finally, the HTTP headers and body can be used as the output.
Design Architecture of JWeiBo 1: Initializing API. 2: Constructing Request. 3: HTTP Transaction. 4: Fetching Response.
Design Program interface between classes
Implementation HTTP HTTPManager(SinaWeiBoHTTPManager) HTTP Basic: encodedBasic="Basic"+newString(new BASE64Encoder().encode((credential.getUsername() +":"+ credential.getPassword()).getBytes())); httpGet.addHeader("Authorization", encodedBasic);
Implementation HTTP HTTPManager(SinaWeiBoHTTPManager) OAuth: Steps in OAuth authentication
Implementation Response • Response(SinaWeiBoResponse) • Data format: • XML, JSON. • Ultimate Container: • JavaBean (Status, User, Comment, Emotion……). • private long id, String screen_name; • public void assignXML(Element elem), assignJSON(JSONObject jsonObject){} • public static List<User> parseXML(Document document), parseJSON(JSONArray jsonArray){} • public static User parseXMLAsElement(Document document), parseJSONAsObject(JSONObject jsonObject) • public static List<User> parseJSONAsHybrid(JSONObject jsonObject){ • @Overridepublic String toString(), boolean equals(Object object), int hashCode()
Sample codes Source Code: api = SinaWeiBo.builder().initialize(appKey,appSecret).build(); request = ((SinaWeiBo)api).publicTimeline().count(10).build(); response = request.httpCall(); System.out.println(response.toString()); statuses = PublicTimeline.parser(response).parse(); for(Status status : statuses){ System.out.println(status.toString()); } Output: JSON XML
Acknowledgments It has been a great pleasure to work with my advisor Dai Yintao, during the course E-Commerce and the graduation project; he impressed me a lot by his critical thinking and kindness. Zhao Fengnian also deserves a great of thanks, for he introduced me to the Web Technology and led to all of the work I have done about the applications and systems on network. I would like to thank all of my classmates who accompanied me through the graduation project; you gave me so many strong encouragements and selfless cares.