`
kongshanxuelin
  • 浏览: 922402 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

校内应用API开发源码

阅读更多

目前在51,校内,facebook开发小应用越来越热,这里我仅以xiaonei.com提供的APP Java API为例,探讨他的实现方法,简单来说就是分为2步:

  1. 申请个应用,得到应用的API Key和Secret两个数值
  2. 利用这两个数值,我们就可以使用xiaonei的Java API,以下代码用来实现获取你的个人信息和你的好友信息代码(由于邀请API已过期,所以不能使用):
package com.cxlh.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.w3c.dom.Document;

import com.common.utils.StrCharUtil;
import com.xiaonei.api.ProfileField;
import com.xiaonei.api.XiaoneiException;
import com.xiaonei.api.XiaoneiRestClient;
import com.xiaonei.api.schema.Friend;
import com.xiaonei.api.schema.FriendsGetFriendsResponse;
import com.xiaonei.api.schema.RequestsSendRequestResponse;
import com.xiaonei.api.schema.UsersGetInfoResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;


/**
 * Servlet implementation class XN
 */
public class XN extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	public static String PARAM_XN_SIG_IN_IFRAME = "xn_sig_in_iframe";

	public static String PARAM_XN_SIG_TIME = "xn_sig_time";

	public static String PARAM_XN_SIG_ADDED = "xn_sig_added";

	public static String PARAM_XN_SIG_USER = "xn_sig_user";

	public static String PARAM_XN_SIG_SESSION_KEY = "xn_sig_session_key";

	public static String PARAM_XN_SIG_API_KEY = "xn_sig_api_key";	
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public XN() {
        super();
        // TODO Auto-generated constructor stub
    }

    private List<Friend> getFriend(XiaoneiRestClient client) throws Exception{
	    client.friends_getFriends();
	    FriendsGetFriendsResponse resp = (FriendsGetFriendsResponse) client.getResponsePOJO();
	    List<Friend> friends = resp.getFriend();
	    return friends;
	    }    	
    }
    
    private String buildUserInfo(int id) {
    	 StringBuffer sb=new StringBuffer();
    	 sb.append("<div align=\"center\">\n");
    	 sb.append("图片:<xn:profile-pic uid=\"");
    	 sb.append(id);
    	 sb.append("\" linked=\"true\" size=\"tiny\"/><br>\n");
    	 sb.append("姓名:<xn:name uid=\""+id+"\" linked=\"true\" shownetwork=\"true\" />\n");
    	 sb.append("</div>\n");
    	 return sb.toString();
    	 }
    	     
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		response.setHeader("Charset", "utf-8");
		response.setHeader("Cache-Control", "no-cache");
		request.setCharacterEncoding("UTF-8");
		
		JSONObject json = new JSONObject();
		
		String cmd=StrCharUtil.formatNullStr(request.getParameter("cmd"));
		String callback=StrCharUtil.formatNullStr(request.getParameter("callback"));
		
		String sessionKey = request.getParameter(PARAM_XN_SIG_SESSION_KEY);
		
	
	   	XiaoneiRestClient client = new XiaoneiRestClient("你的APIKey", 
	   			"你的Secret Key", sessionKey);
	   	//client.setDebug(true);
		
		try{
			if("getfriends".equals(cmd)){
				JSONArray jj = JSONArray.fromObject(getFriend(client));
				json.put("res",jj.toString());
			}else if("myinfor".equals(cmd)){
				int loggedInUserId = 0;
				 try {
					 loggedInUserId = client.users_getLoggedInUser();
					 EnumSet<ProfileField> enumFields = EnumSet.of(ProfileField.NAME,
							 ProfileField.HOMETOWN_LOCATION,ProfileField.BIRTHDAY,
							 ProfileField.HEADURL,ProfileField.MAINURL,
							 ProfileField.SEX,ProfileField.STAR,ProfileField.TINYURL,
							 ProfileField.ZIDOU,ProfileField.UNIVERSITY_HISTORY,
							 ProfileField.WORK_HISTORY);
							 
					 Document doc = client.users_getInfo(loggedInUserId, enumFields);
					 json.put("xml",doc.toString());
					 UsersGetInfoResponse loggedUserGetInfoRes = (UsersGetInfoResponse) client.getResponsePOJO();
					 json.put("res",JSONArray.fromObject(loggedUserGetInfoRes.getUser()));
				 }
				 catch(XiaoneiException e) {
					 e.printStackTrace();
				 }
			}else if("invite".equals(cmd)){
				List<Integer> userIds = new ArrayList();
				List<Friend> friends = getFriend(client);

				for (Friend f:friends) {
					userIds.add(f.getId());
				}

				client.requests_sendRequest(userIds);
				request.setAttribute("uids", client.getRawResponse());
				//进一步看看都成功邀请了哪些朋友
				RequestsSendRequestResponse resp = (RequestsSendRequestResponse) client.getResponsePOJO();
				
				List<Integer> uids = resp.getUid();
				
				json.put("res",JSONArray.fromObject(uids));
			}
			if(json!=null){
				if(callback.equals("")){ //没有回调函数
					response.getWriter().println(json.toString());
				}else{
					response.setContentType("text/javascript;charset=utf-8");
					response.getWriter().println(callback+"("+json.toString()+")");
				}		
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}		
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(request, response);
	}

}

 

 最终效果见校内网:http://apps.xiaonei.com/testfaqee

 

7
0
分享到:
评论
2 楼 kongshanxuelin 2009-06-26  
目前该应用已过期,被我删掉了,目前已将该接口应用在我的校内应用中:http://apps.xiaonei.com/randfriend/
1 楼 saiyaren 2009-06-26  
你那里有校内 API 的doc吗?

相关推荐

    校内网微信小程序源码.rar

    【标签】:“校内网微信小程序源码.rar”标签表明了该压缩包内容的核心,即与微信小程序相关的开发资源,特别是针对校内网络应用场景的定制化代码。 【压缩包子文件的文件名称列表】:虽然具体文件列表未给出,但...

    仿校内网的SNS源码程序

    在实际应用中,开发这样的SNS源码程序可能会涉及到以下技术知识点: - **前端技术**:HTML5、CSS3用于构建用户界面,JavaScript(可能包括jQuery、Vue.js、React.js等框架)用于交互逻辑和动态数据加载。 - **后端...

    校内生活小程序源码分享

    以上就是“校内生活小程序源码分享”所涉及的主要知识点,对于想要学习小程序开发、特别是校园应用开发的开发者来说,这是一个极好的实践案例。通过分析源码,不仅可以提升编程技能,还能了解到如何将技术应用到实际...

    vue校内网小程序源码

    在这个"vue校内网小程序源码"项目中,我们可以深入理解Vue.js如何应用于微信小程序的开发,同时也可以看到一个典型的毕业设计案例。 1. **Vue.js基础知识** - **虚拟DOM**: Vue通过虚拟DOM技术提高了应用性能,...

    校内网小程序源码.zip

    5. **学习API和组件**:小程序提供了丰富的API(应用程序接口)和组件,如网络请求、数据库操作、地图、支付等,研究源码中如何使用它们来实现功能。 6. **动手实践**:尝试修改源码,添加新功能或优化现有功能,...

    校内网小程序源码加截图.7z

    【标题】"校内网小程序源码加截图.7z" 涉及的主要知识点是小程序开发和软件/插件的使用。小程序是一种轻量级的应用形式,它无需下载安装即可在微信、支付宝等平台上使用,极大地提高了用户的便利性。在这个压缩包中...

    校内交友论坛小程序源码.zip

    【标题】"校内交友论坛小程序源码"指的是一个用于创建校园内部社交平台的小程序应用程序的源代码。这种源码通常包含所有必要的编程文件,可以让开发者或学生社团根据自己的需求定制和部署一个在线交流平台。 【描述...

    校内网小程序毕业设计—(包含完整源码可运行).zip

    "校内网小程序毕业设计"这一标题表明这是一个关于小程序开发的毕业设计项目,主要聚焦于校内网络应用。它暗示了开发者可能为在校学生,目的是完成其学业要求,同时也可能是为了实现一个方便校园生活的小程序。这个...

    校内网小程序源码+截图

    【标题】"校内网小程序源码+截图" 指的是一个开源的小程序项目,主要服务于校园内部的网络应用需求。这个项目包含了完整的源代码和相应的截图,可以帮助开发者理解和学习如何构建类似的小程序。 【描述】中的内容...

    校内网小程序(源码).zip

    【标题】"校内网小程序(源码).zip" 提供的是一个关于校内网小程序的源代码...通过深入研究这个校内网小程序的源码,开发者不仅可以提升自己的编程技能,还能了解小程序的开发流程,为未来创建类似应用打下坚实基础。

    微信小程序-校内网小程序源码及项目截图

    "校内网小程序"是基于微信小程序平台开发的一个特定应用,它可能是用于高校内部的社交、信息共享或者校园生活服务的工具。 在源码层面,微信小程序的开发主要涉及以下几个技术点: 1. **WXML**:这是一种类似于...

    韩顺平SSH框架校内网源码

    这个“韩顺平SSH框架校内网源码”是针对韩顺平老师的课程内容设计的一个项目,非常适合初学者用来学习和实践。下面我们将深入探讨SSH框架的各个组件以及它们在构建校内网应用中的作用。 1. **Spring框架**:Spring...

    校内网自动登录发帖程序源码

    【标题】"校内网自动登录发帖程序源码"涉及的是网络编程和自动化操作的领域,主要聚焦在C#和Java两种编程语言的应用。这个程序的目的是实现对"校内网"(可能是早期的社交网络平台,如人人网)的自动登录和发帖功能,...

    ASP.NET源码——[电子商务]山建大校内购物网源码.zip

    此源码“ASP.NET源码——[电子商务]山建大校内购物网源码.zip”显然是一个基于ASP.NET技术的电子商务平台的实现,用于模拟或实际应用于山建大(山东建筑大学)的校园内部购物环境。让我们深入探讨一下这个源码可能...

    基于SpringBoot开发的校内信息共享平台-源码

    1. **Web开发**:使用`spring-boot-starter-web`,SpringBoot集成了Spring MVC,提供RESTful API服务,用于信息的发布和获取。 2. **数据持久化**:可能使用`spring-boot-starter-data-jpa`配合Spring Data JPA和...

    Android应用源码校园信息掌上平台项目源码

    首先,此项目的源码使用了Android Studio作为集成开发环境(IDE),它是Google官方支持的Android应用开发工具,包含了代码编辑器、调试器、构建工具等一系列功能。开发者可以通过修改源码,根据学校的具体需求调整...

    校内网小程序.zip小程序精选源码

    【标题】中的“校内网小程序.zip小程序精选源码”表明这是一个包含校内网小程序源代码的压缩文件。...总的来说,这份源码对于提升小程序开发技能,或者对校内网小程序功能进行定制和优化具有很高的价值。

    微信小程序-校内新闻大图-程序源码.zip

    "微信小程序-校内新闻大图-程序源码.zip"是一个包含微信小程序源码的压缩包,专门用于开发展示校内新闻的大图应用。这个源码可以作为学习微信小程序开发、了解其架构和组件的实践案例。 微信小程序的开发涉及到以下...

Global site tag (gtag.js) - Google Analytics