All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.weixinmp.http.dialog.user.GetUserInfoRequest Maven / Gradle / Ivy

The newest version!
package net.sf.weixinmp.http.dialog.user;

import java.util.ArrayList;
import java.util.List;

import net.sf.weixinmp.http.WeixinmpHttpRequest;
import net.sf.weixinmp.http.dialog.base.support.OperationAdapter;
import net.sf.weixinmp.http.dialog.base.support.Operations;
import net.sf.weixinmp.http.dialog.base.support.RandomTool;
import net.sf.weixinmp.http.dialog.base.support.WebSecurity;
import net.sf.weixinmp.http.dialog.base.support.WebSession;
import net.sf.weixinmp.http.dialog.base.support.htmlunit.IdentityUnit;
import net.sf.weixinmp.http.dialog.base.support.htmlunit.WeixinmpWebSession;
import net.sf.weixinmp.http.dialog.base.support.htmlunit.json.FansInfo;
import net.sf.weixinmp.model.UserInfo;

import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.util.NameValuePair;

/**
 * https://mp.weixin.qq.com/cgi-bin/getcontactinfo?t=ajax-getcontactinfo&lang=
 * zh_CN&fakeid=o4bgnv_GukezqSa0RSdvlD3RXbNM
 * 
 * @author Alex
 *
 */
public class GetUserInfoRequest extends WeixinmpHttpRequest {
	public UserInfo execute(WebSecurity security, final String openId) {
		final WebSession webSession = super.getWebSession(security);
		webSession.loginIfNecessary();
		final IdentityUnit unit = webSession.lookup(WeixinmpWebSession.IDENTITY_UNIT_KEY);
		Operations ops = Operations.buid(new OperationAdapter() {
			private FansInfo fansInfo;

			@Override
			public void execute() throws Exception {
				List params = new ArrayList();
				params.add(new NameValuePair("action", "get_fans_info"));
				params.add(new NameValuePair("token", unit.getAccessToken()));
				params.add(new NameValuePair("f", "json"));
				params.add(new NameValuePair("lang", "zh_CN"));
				params.add(new NameValuePair("ajax", "1"));
				params.add(new NameValuePair("random", RandomTool.generate()));
				params.add(new NameValuePair("user_openid", openId));
				WebRequest wr = createCommonRequest(MP_WEIXIN_GET_FANS_INFO, params);
				Page page = webSession.fetchPage(wr);
				String fanInfoJSON = page.getWebResponse().getContentAsString();
				fansInfo = FansInfo.fromJson(fanInfoJSON);
			}
			public UserInfo getResult() {
				if (fansInfo != null && fansInfo.getFirstUserInfo() != null) {
					return fansInfo.getFirstUserInfo().convert();
				}
				return null;
			}
		});

		webSession.exec(ops);
		return ops.getFirstResult();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy