关于c httpclient https调HTTPS地址的问题(微信公众号 SUNJCE)

微信公众号开发之使用HttpClient获取access token
微信公众号开发之使用HttpClient获取access token
现在越来越多的公司都建立了自己的微信公众号,因此有必要了解一下微信公众号的简单开发。本文简单介绍一下access_token的获取。
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
公众平台的API调用所需的access_token的使用及生成方式说明:
1、为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务;
2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡;
3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。
以上内容摘自微信公众平台文档,需要注意以下几点:
1、我们开发时会有开发环境,测试环境以及生产环境,对微信服务器而言,不会区分你获取的access_token的环境,也就是说如果你生产环境成功获取到access_token之后,又在本地测试环境中获取了access_token,这时会导致生产环境的access_token被覆盖,从而影响业务。因此需要注意开发和测试环境测试好后,一旦上线,本地和测试系统中就不应该再去获取access_token了,即便是获取,也应该是从生产环境服务器获取。
2、开发时一定要注意expires_in字段,目前是7200秒之内的值,而且微信官方说明这个字段未来可能会有变化,因此我们不能只获取access_token,expires_in字段也很重要,要确保当微信服务器修改了过期时间时我们的程序也能正确处理。
3、我们需要提供两种方式去更新access_token,一种是使用定时器定期刷新token,二是提供主动刷新的api。需要用到acees_token的地方首先判断是否过期,如果过期则主动刷新。
下面给我我自己的简单示例:
1、添加需要的maven依赖,使用HttpClient发送请求获取json数据包,使用jackson解析json获取到相关参数。
&dependency&
&groupId&org.apache.httpcomponents&/groupId&
&artifactId&httpclient&/artifactId&
&version&4.5.1&/version&
&/dependency&
&dependency&
&groupId&com.fasterxml.jackson.core&/groupId&
&artifactId&jackson-core&/artifactId&
&version&2.6.4&/version&
&/dependency&
&dependency&
&groupId&com.fasterxml.jackson.core&/groupId&
&artifactId&jackson-databind&/artifactId&
&version&2.6.4&/version&
&/dependency&
2、编写实体类封装微信服务器返回的json数据包
public class AccessToken {
* 错误时返回前两个参数,{"errcode":40013,"errmsg":"invalid appid"}
* 正确时返回后面两个参数,{"access_token":"ACCESS_TOKEN","expires_in":7200}
//错误代码
//错误信息
//获取到的凭证
private String access_
//凭证有效时间,单位:秒
private int expires_
public int getErrcode() {
public void setErrcode(int errcode) {
this.errcode =
public String getErrmsg() {
public void setErrmsg(String errmsg) {
this.errmsg =
public String getAccess_token() {
return access_
public void setAccess_token(String access_token) {
this.access_token = access_
public int getExpires_in() {
return expires_
public void setExpires_in(int expires_in) {
this.expires_in = expires_
3、使用HttpClient发送请求,并解析返回的数据包
public class TokenUtils {
public static AccessToken getAccessToken(String appId,String appSecret) throws ClientProtocolException, IOException {
StringBuilder requestUrl = new StringBuilder();
requestUrl.append("https://api./cgi-bin/token?grant_type=client_credential&appid=")
.append(appId)
.append("&secret=")
.append(appSecret);
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(requestUrl.toString());
CloseableHttpResponse response = client.execute(httpGet);
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
return new ObjectMapper().readValue(EntityUtils.toString(entity), AccessToken.class);
} finally {
response.close();
这样我们便将json数据包封装到了AccessToken中,后面你就可以将token全局缓存,记录过期时间等。
本文链接:http://blog.lifw.org/post/,博主原创文章,欢迎转载,转载请注明出处和链接。
分享本文:
上一篇 >:
下一篇 >:
立即来发表评论
请输入回复内容
没有账户?立即
用户名(至少5位)
再次输入密码
已有账户?立即关于httpclient使用post登陆百度新地址/v2/api/?login问题
[问题点数:20分]
关于httpclient使用post登陆百度新地址/v2/api/?login问题
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。关于HttpClient调HTTPS地址的问题(微信公众号 SUNJCE)_百度知道
关于HttpClient调HTTPS地址的问题(微信公众号 SUNJCE)
UTF-8&quot,如果在public static void main(String[] args)里面调用可以用.weixin.available(), &quot://
S30000& &#47:);;&#47.com/sns/oauth2/access_
}catch(Exception e) {
e.getOutputStream(););).setRequestProperty(&quot.setProperty(&quot.
HttpURLConnection http = (HttpUwLConnection) url.net:// 读取超时30秒
x-www-form-urlencoded&quot.setDoOutput(true).defaultConnectTimeout&quot.out?&quot.printStackTrace();
} }------------------------这个方法;GET&quot正在做微信公众号网页开发想在后台action中用httpclient调用微信服务器的https地址------------------------public static void test(String code){
String action = &
http.connect().println(message)./https.getInputStream();
InputStream is =30000&quot.read(jsonBytes);
System.qq.defaultReadTimeout&quot.;
OutputStream os = http, &quot.setProperty(&
URL url = new URL(action), &quot.setDoInput(true);&#47。但是如果放在 struts action 里面调用就出错.SSLEapplication/.weixin。);).
String message = new String(jsonB
int size = is,
& 连接超时30秒
System.flush();
http.client.sun.SecurityEContent-Type&
http.setRequestMethod(&quot.openConnection();: JCE cannot authenticate the provider SunJCE哪位高人知道这是为什么
提示信息内容是,关于你的其他部分还是不了解:JCE无法验证提供者SunJCE,你可以根据提示检查下您好,您的程序没有问题
最近又测试了,只要类放在web里实例化就不行,应该和web安全机制有关系
这方面腾讯肯定会有加密或者限制访问。
来自团队:
其他类似问题
为您推荐:
httpclient的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java模拟微信公众平台登录发送消息&2013年11月后可用
new Weixin()对象,先登录再取粉丝数和者发消息。
&* 发消息需要设置post参数中的content
&* 内容中的超链接可以直接发送不用使用标签
&* 经过我(trprebel)修改之后,此份代码可在2013年11月之后使用
&* 我只做了获取粉丝列表和发送消息,其他部分未做
&* 理论上可以获取到粉丝的地址,签名等一切你登陆可以得到的信息
&* 另外可能需要你在本机先登陆过至少一次微信公众平台获取SSL证书
&* 此份代码作者较多,函数前面都有作者名,我只修改了登陆,获取粉丝列表和发送消息
&* 其他代码可能已经不能用了但我并没有删除,方便大家扩展,我做的也比较粗糙,没整理
&* 原文地址:/blog.php?i=268
&* 使用到的库:
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-lang.jar
commons-logging-1.0.4.jar
fastjson-1.1.15.jar
gson-2.2.4.jar
httpclient-4.1.3.jar
httpcore-4.1.4.jar
jsoup-1.5.2.jar
&* 环境:JDK1.6
&* @param args
java.io.IOE
java.io.InputS
java.security.cert.CertificateE
java.security.cert.X509C
java.util.ArrayL
java.util.L
javax.net.ssl.HostnameV
javax.net.ssl.SSLC
javax.net.ssl.SSLS
javax.net.ssl.TrustM
javax.net.ssl.X509TrustM
mons.codec.digest.DigestU
mons.httpclient.C
mons.httpclient.HttpC
mons.httpclient.HttpE
mons.httpclient.HttpS
mons.httpclient.NameValueP
mons.httpclient.methods.GetM
mons.httpclient.methods.PostM
mons.httpclient.methods.RequestE
mons.httpclient.methods.multipart.FileP
mons.httpclient.methods.multipart.MultipartRequestE
mons.httpclient.methods.multipart.P
mons.httpclient.methods.multipart.StringP
mons.lang.StringU
mons.logging.L
mons.logging.LogF
org.apache.http.HttpE
org.apache.http.HttpR
org.apache.http.client.entity.UrlEncodedFormE
org.apache.http.client.methods.HttpP
org.apache.http.conn.scheme.S
org.apache.http.conn.ssl.SSLSocketF
org.apache.http.impl.client.DefaultHttpC
org.apache.http.message.BasicNameValueP
org.apache.http.util.EntityU
com.alibaba.fastjson.JSON;
class Weixin {
private final static Log log =
LogFactory.getLog(Weixin.class);
public final static String HOST =
"http://mp.";
public final static String LOGIN_URL =
"http://mp./cgi-bin/login?lang=zh_CN";
public final static String INDEX_URL =
"http://mp./cgi-bin/indexpage?t=wxm-index&lang=zh_CN";
public final static String SENDMSG_URL
="https://mp./cgi-bin/singlesend";
public final static String FANS_URL =
"http://mp./cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=0";
public final static String LOGOUT_URL =
"http://mp./cgi-bin/logout?t=wxm-logout&lang=zh_CN";
public final static String DOWNLOAD_URL =
"http://mp./cgi-bin/downloadfile?";
public final static String VERIFY_CODE =
"http://mp./cgi-bin/verifycode?";
public final static String POST_MSG =
"https://mp./cgi-bin/masssend?t=ajax-response";
public final static String VIEW_HEAD_IMG =
"http://mp./cgi-bin/viewheadimg";
public final static String GET_IMG_DATA =
"http://mp./cgi-bin/getimgdata";
public final static String GET_REGIONS =
"http://mp./cgi-bin/getregions";
public final static String GET_MESSAGE =
"http://mp./cgi-bin/getmessage";
public final static String OPER_ADVANCED_FUNC =
"http://mp./cgi-bin/operadvancedfunc";
public final static String MASSSEND_PAGE =
"http://mp./cgi-bin/masssendpage";
public final static String FILE_MANAGE_PAGE =
"http://mp./cgi-bin/filemanagepage";
public final static String OPERATE_APPMSG =
"https://mp./cgi-bin/operate_appmsg?token=&lang=zh_CN&sub=edit&t=wxm-appmsgs-edit-new&type=10&subtype=3&ismul=1";
public final static String FMS_TRANSPORT =
"http://mp./cgi-bin/fmstransport";
//public final static String CONTACT_MANAGE_PAGE =
"http://mp./cgi-bin/contactmanagepage";
public final static String CONTACT_MANAGE_PAGE =
"http://mp./cgi-bin/contactmanage";
public final static String OPER_SELF_MENU =
"http://mp./cgi-bin/operselfmenu";
public final static String REPLY_RULE_PAGE =
"http://mp./cgi-bin/replyrulepage";
public final static String SINGLE_MSG_PAGE =
"http://mp./cgi-bin/singlemsgpage";
public final static String USER_INFO_PAGE =
"http://mp./cgi-bin/userinfopage";
public final static String DEV_APPLY =
"http://mp./cgi-bin/devapply";
public final static String UPLOAD_MATERIAL =
"https://mp./cgi-bin/uploadmaterial?cgi=uploadmaterial&type=2&token=&t=iframe-uploadfile&lang=zh_CN&formId=1";
public final static String USER_AGENT_H = "User-Agent";
public final static String REFERER_H = "Referer";
public final static String USER_AGENT = "Mozilla/5.0 (Windows NT
6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko)
Chrome/25.0. Safari/537.22";
public final static String UTF_8 = "UTF-8";
private HttpClient client = new HttpClient();
private Cookie[]
private int loginErrC
private String loginErrM
private int msgSendC
private String msgSendM
private String loginU
private String loginP
public boolean isLogin =
public Weixin(String user, String pwd) {
&&&&&&&&&&&&&&&&&&
this.loginUser =
&&&&&&&&&&&&&&&&&&
this.loginPwd =
public Cookie[] getCookies() {
&&&&&&&&&&&&&&&&&&
public void setCookies(Cookie[] cookies) {
&&&&&&&&&&&&&&&&&&
this.cookies =
public String getCookiestr() {
&&&&&&&&&&&&&&&&&&
public void setCookiestr(String cookiestr) {
&&&&&&&&&&&&&&&&&&
this.cookiestr =
public String getToken() {
&&&&&&&&&&&&&&&&&&
public void setToken(String token) {
&&&&&&&&&&&&&&&&&&
this.token =
public int getLoginErrCode() {
&&&&&&&&&&&&&&&&&&
return loginErrC
public void setLoginErrCode(int loginErrCode) {
&&&&&&&&&&&&&&&&&&
this.loginErrCode = loginErrC
public String getLoginErrMsg() {
&&&&&&&&&&&&&&&&&&
return loginErrM
public void setLoginErrMsg(String loginErrMsg) {
&&&&&&&&&&&&&&&&&&
this.loginErrMsg = loginErrM
public int getMsgSendCode() {
&&&&&&&&&&&&&&&&&&
return msgSendC
public void setMsgSendCode(int msgSendCode) {
&&&&&&&&&&&&&&&&&&
this.msgSendCode = msgSendC
public String getMsgSendMsg() {
&&&&&&&&&&&&&&&&&&
return msgSendM
public void setMsgSendMsg(String msgSendMsg) {
&&&&&&&&&&&&&&&&&&
this.msgSendMsg = msgSendM
public String getLoginUser() {
&&&&&&&&&&&&&&&&&&
return loginU
public void setLoginUser(String loginUser) {
&&&&&&&&&&&&&&&&&&
this.loginUser = loginU
public String getLoginPwd() {
&&&&&&&&&&&&&&&&&&
return loginP
public void setLoginPwd(String loginPwd) {
&&&&&&&&&&&&&&&&&&
this.loginPwd = loginP
public boolean isLogin() {
&&&&&&&&&&&&&&&&&&
return isL
public void setLogin(boolean isLogin) {
&&&&&&&&&&&&&&&&&&
this.isLogin = isL
public void login() {
&&&&&&&&&&&&&&&&&&
boolean bool = _login();
&&&&&&&&&&&&&&&&&&
while (!bool) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【登录失败】【错误代码:" + this.loginErrMsg + "】【账号:"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ this.loginUser + "】正在尝试重新登录....";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
bool = _login();
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Thread.sleep(500);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
} catch (InterruptedException e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
bool = _login();
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
System.out.println("登陆成功:");
private boolean _login() {
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
PostMethod post = new PostMethod(LOGIN_URL);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setRequestHeader("Referer",
"https://mp./");
&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setRequestHeader(USER_AGENT_H, USER_AGENT);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
NameValuePair[] params = new NameValuePair[]{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new NameValuePair("username", this.loginUser),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new NameValuePair("pwd",
DigestUtils.md5Hex(this.loginPwd
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
.getBytes())), new NameValuePair("f", "json"),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new NameValuePair("imagecode", "")};
&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setQueryString(params);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
int status = client.executeMethod(post);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
String ret = post.getResponseBodyAsString();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
LoginJson retcode = JSON.parseObject(ret,
LoginJson.class);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//System.out.println(retcode.getRet());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (retcode.getRet() == 302 && retcode.getErrCode() == 0)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.cookies = client.getState().getCookies();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
StringBuffer cookie = new StringBuffer();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
for (Cookie c : client.getState().getCookies()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
cookie.append(c.getName()).append("=")
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
.append(c.getValue()).append(";");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.cookiestr = cookie.toString();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.isLogin =
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.token = getToken(retcode.getErrMsg());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int errCode = retcode.getErrCode();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrCode = errC
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
switch (errCode) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "系统错误";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "帐号或密码错误";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "密码错误";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "不存在该帐户";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "访问受限";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "需要输入验证码";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "此帐号已绑定私人微信号,不可用于公众平台登录";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "邮箱已存在";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "验证码输入错误";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case -200:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "因频繁提交虚假资料,该帐号被拒绝登录";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "请使用邮箱登陆";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "该公众会议号已经过期,无法再登录使用";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case 65201:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case 65202:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "成功登陆,正在跳转...";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "成功登陆,正在跳转...";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.loginErrMsg = "未知的返回";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【登录失败】【发生异常:" + e.getMessage() + "】";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
private String getToken(String s) {
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (StringUtils.isBlank(s))
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String[] ss = StringUtils.split(s, "?");
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String[] params =
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (ss.length == 2) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (!StringUtils.isBlank(ss[1]))
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
params = StringUtils.split(ss[1], "&");
&&&&&&&&&&&&&&&&&&&&&&&&&&&
} else if (ss.length == 1) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (!StringUtils.isBlank(ss[0]) && ss[0].indexOf("&")
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
params = StringUtils.split(ss[0], "&");
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
for (String param : params) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (StringUtils.isBlank(param))
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
String[] p = StringUtils.split(param, "=");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (null != p && p.length == 2
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&& StringUtils.equalsIgnoreCase(p[0], "token"))
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
return p[1];
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【解析Token失败】【发生异常:" + e.getMessage() + "】";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
public void index() throws HttpException, IOException {
&&&&&&&&&&&&&&&&&&
GetMethod get = new GetMethod(INDEX_URL);
&&&&&&&&&&&&&&&&&&
get.setRequestHeader(USER_AGENT_H, USER_AGENT);
&&&&&&&&&&&&&&&&&&
get.setRequestHeader("Cookie", this.cookiestr);
&&&&&&&&&&&&&&&&&&
int status = client.executeMethod(get);
&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println(get.getResponseBodyAsString());
&&&&&&&&&&&&&&&&&&
public void logout() throws HttpException, IOException {
&&&&&&&&&&&&&&&&&&
GetMethod get = new GetMethod(LOGOUT_URL);
&&&&&&&&&&&&&&&&&&
get.setRequestHeader(USER_AGENT_H, USER_AGENT);
&&&&&&&&&&&&&&&&&&
get.setRequestHeader("Cookie", this.cookiestr);
&&&&&&&&&&&&&&&&&&
int status = client.executeMethod(get);
&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println("-----------注销登录成功-----------");
&&&&&&&&&&&&&&&&&&
public InputStream code() throws HttpException, IOException
&&&&&&&&&&&&&&&&&&
GetMethod get = new GetMethod(VERIFY_CODE);
&&&&&&&&&&&&&&&&&&
get.setRequestHeader(USER_AGENT_H, USER_AGENT);
&&&&&&&&&&&&&&&&&&
get.setRequestHeader("Cookie", this.cookiestr);
&&&&&&&&&&&&&&&&&&
NameValuePair[] params = new NameValuePair[]{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new NameValuePair("username", this.loginUser),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new NameValuePair("r", "9")};
&&&&&&&&&&&&&&&&&&
get.setQueryString(params);
&&&&&&&&&&&&&&&&&&
int status = client.executeMethod(get);
&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
return get.getResponseBodyAsStream();
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
public int getFans() {
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String paramStr = "?t=user/index&token=" +
this.token
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
"&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=0";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
//String paramStr =
"?t=user/index&pagesize=10&pageidx=0&type=4";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (!this.isLogin) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this._login();
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (this.isLogin) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
GetMethod get = new GetMethod(CONTACT_MANAGE_PAGE +
paramStr);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
get.setRequestHeader(REFERER_H, INDEX_URL);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
get.setRequestHeader("Cookie", this.cookiestr);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int status = client.executeMethod(get);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//return parseFansCount(get.getResponseBodyAsString());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
return parseFans(get.getResponseBodyAsString());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
return -1;
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【获取粉丝数失败】【可能登录过期】";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
return -1;
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
return -1;
private int parseFansCount(String text) {
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
StringBuffer json = new StringBuffer();
&&&&&&&&&&&&&&&&&&&&&&&&&&&
final String start = "DATA.groupList =";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
for (int i = text.indexOf(start) + start.length(), len =
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
.length(); i & i++) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
char ci = text.charAt(i);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (ci == ';') {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
json.append(text.charAt(i));
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String txt = json.toString().replaceAll("[*]1", "")
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
.replaceAll("defaultGroupName\\[0\\] \\|\\|", "")
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
.replaceAll("defaultGroupName\\[1\\] \\|\\|", "")
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
.replaceAll("defaultGroupName\\[2\\] \\|\\|", "")
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
.replaceAll("defaultGroupName\\[100\\] \\|\\|", "");
&&&&&&&&&&&&&&&&&&&&&&&&&&&
Listfans = JSON.parseArray(txt, FansCount.class);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (null != fans && !fans.isEmpty())
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
for (FansCount fan : fans)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (fan.getId() == 0)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
return fan.getNum();
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【解析粉丝数失败】
" + "\t\n【文本:】\t\n" + text + "\t\n"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ "【发生异常:" + e.getMessage() + "】";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
return -1;
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
return -1;
private int parseFans(String text)
{&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
int liststart=text.indexOf("cgiData")+8;
&&&&&&&&&&&&&&&&&&&&&&&&&&&
int listend=text.indexOf("};", liststart)+1;
&&&&&&&&&&&&&&&&&&&&&&&&&&&
text=text.substring(liststart, listend);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
//System.out.println(text);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
int friendliststart=text.indexOf("contacts")+10;
&&&&&&&&&&&&&&&&&&&&&&&&&&&
int friendlistend=text.indexOf("contacts",
friendliststart)-3;
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String friendlistjson=text.substring(friendliststart,
friendlistend);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
//System.out.println(friendlistjson);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
fans=JSON.parseArray(friendlistjson,Fan.class);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println("粉丝列表:");
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
for (Fan fan : fans) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println("ID:"+fan.getId()+"
nick_name:"+fan.getNick_name()+"
remark_name:"+fan.getRemark_name()+"
group_id:"+fan.getGroup_id());
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
return fans.size();
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【解析粉丝数失败】
" + "\t\n【文本:】\t\n" + text + "\t\n"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ "【发生异常:" + e.getMessage() + "】";
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
return -1;
&&&&&&&&&&&&&&&&&&
public boolean msgSend(MsgForm form, MsgType type) {
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (!this.isLogin) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this._login();
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (this.isLogin) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
form.setToken(this.token);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
PostMethod post = new PostMethod(POST_MSG);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setRequestHeader(USER_AGENT_H, USER_AGENT);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setRequestHeader(REFERER_H, INDEX_URL);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setRequestHeader("Cookie", this.cookiestr);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
NameValuePair[] params =
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Part[] parts =
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
switch (type) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case TEXT:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// params = new NameValuePair[] {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("type", form.getType()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("error", form.getError()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("needcomment",
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// form.getNeedcomment()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("groupid", form.getGroupid()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("sex", form.getSex()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("country", form.getCountry()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("province", form.getProvince()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("city", form.getCity()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("token", form.getToken()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("ajax", form.getAjax()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
// new NameValuePair("t", "ajax-response") };
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
parts = new Part[]{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("content", form.getContent(),
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("type", form.getType()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("error", form.getError()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("needcomment", form.getNeedcomment()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("groupid", form.getGroupid()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("sex", form.getSex()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("country", form.getCountry()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("province", form.getProvince()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("city", form.getCity()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("token", form.getToken()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("ajax", form.getAjax()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("t", "ajax-response")};
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case IMAGE_TEXT:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
parts = new Part[]{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("content", form.getContent(),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("type", form.getType()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("error", form.getError()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("needcomment", form.getNeedcomment()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("groupid", form.getGroupid()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("sex", form.getSex()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("country", form.getCountry()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("province", form.getProvince()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("city", form.getCity()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("token", form.getToken()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("ajax", form.getAjax()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("t", "ajax-response")};
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
parts = new Part[]{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("content", form.getContent(),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("type", form.getType()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("error", form.getError()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("needcomment", form.getNeedcomment()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("groupid", form.getGroupid()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("sex", form.getSex()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("country", form.getCountry()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("province", form.getProvince()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("city", form.getCity()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("token", form.getToken()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("ajax", form.getAjax()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("t", "ajax-response")};
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
RequestEntity entity = new MultipartRequestEntity(parts,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.getParams());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setRequestEntity(entity);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
status = client.executeMethod(post);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
String text = post.getResponseBodyAsString();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
MsgJson ret = JSON.parseObject(text, MsgJson.class);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.msgSendCode = ret.getRet();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
switch (this.msgSendCode) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.msgSendMsg = "发送成功";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.msgSendMsg = "参数错误,请仔细检查";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case 64004:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.msgSendMsg = "今天的群发数量已到,无法群发";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case -20000:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.msgSendMsg = "请求被禁止,请仔细检查token是否合法";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this.msgSendMsg = "未知错误!";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【群发信息失败】【解析json错误】" + e.getMessage()
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+ "\n\t【文本:】\n\t" +
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
String info = "【群发信息失败】" + e.getMessage();
&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
log.debug(info);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
public boolean sendMsg(int i)
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (!this.isLogin) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
this._login();
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (this.isLogin) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (fans==null) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println("请先获取粉丝列表:");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
DefaultHttpClient httpClient = new
DefaultHttpClient();&&&&&&&&&
//创建默认的httpClient实例
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
X509TrustManager xtm = new
X509TrustManager(){&&&&&&&&&&&&&&&&&&
//创建TrustManager
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
public void checkClientTrusted(X509Certificate[] chain, String
authType) throws CertificateException {}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
public void checkServerTrusted(X509Certificate[] chain, String
authType) throws CertificateException {}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
public X509Certificate[] getAcceptedIssuers() {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
SSLContext ctx = SSLContext.getInstance("TLS");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//使用TrustManager来初始化该上下文,TrustManager只是被SSL的Socket所使用
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
ctx.init(null, new TrustManager[]{xtm}, null);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//创建SSLSocketFactory
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
SSLSocketFactory socketFactory = new
SSLSocketFactory(ctx);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//通过SchemeRegistry将SSLSocketFactory注册到我们的HttpClient上
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
httpClient.getConnectionManager().getSchemeRegistry().register(new
Scheme("https", 443, socketFactory));
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
HttpPost post = new HttpPost(SENDMSG_URL);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setHeader(USER_AGENT_H, USER_AGENT);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setHeader(REFERER_H,"https://mp./cgi-bin/singlesendpage?t=message/send&action=index&tofakeid="+fans.get(i).getId()+"&token="+this.token+"&lang=zh_CN");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setHeader("Cookie", this.cookiestr);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setHeader("Accept", "application/json, text/javascript,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
FilePart file = new FilePart("uploadfile", form.getUploadfile(),
"image/jpeg", "UTF-8");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println(form.getToken());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Part[] parts = new Part[]{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("cgi", form.getCgi()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("type", form.getType()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("token", form.getToken()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("t", form.getT()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("lang", form.getLang()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
new StringPart("formId", form.getFormId()),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
MultipartRequestEntity entity = new MultipartRequestEntity(parts,
post.getParams());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
post.setRequestEntity(entity);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int status = client.executeMethod(post);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
String text = post.getResponseBodyAsString();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println(text);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
e.printStackTrace();
&&&&&&&&&&&&&&&&&&
public void redirect(String url) {
&&&&&&&&&&&&&&&&&&
if (url.indexOf("https://") == -1)
&&&&&&&&&&&&&&&&&&&&&&&&&&&
url = HOST +
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (this.isLogin) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
GetMethod get = new GetMethod(url);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
get.setRequestHeader(USER_AGENT_H, USER_AGENT);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
get.setRequestHeader(REFERER_H, INDEX_URL);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
get.setRequestHeader("Cookie", this.cookiestr);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
int status = client.executeMethod(get);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (status == HttpStatus.SC_OK) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.err.println("正在跳转.....");
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
System.out.println(get.getResponseBodyAsString());
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
} catch (Exception e) {
&&&&&&&&&&&&&&&&&&
new Weixin()对象,先登录再取粉丝数和者发消息。
&* 发消息需要设置post参数中的content
&* 内容中的超链接可以直接发送不用使用标签
&* 经过我(trprebel)修改之后,此份代码可在2013年11月之后使用
&* 我只做了获取粉丝列表和发送消息,其他部分未做
&* 理论上可以获取到粉丝的地址,签名等一切你登陆可以得到的信息
&* 另外可能需要你在本机先登陆过至少一次微信公众平台获取SSL证书
&* 此份代码作者较多,函数前面都有作者名,我只修改了登陆,获取粉丝列表和发送消息
&* 其他代码可能已经不能用了但我并没有删除,方便大家扩展,我做的也比较粗糙,没整理
&* 原文地址:/blog.php?i=268
&* 源代码连接地址:/s/1gRKNy
&* 使用到的库:
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-lang.jar
commons-logging-1.0.4.jar
fastjson-1.1.15.jar
gson-2.2.4.jar
httpclient-4.1.3.jar
httpcore-4.1.4.jar
jsoup-1.5.2.jar
&* 环境:JDK1.6
&* @param args
public static void main(String[] args) {
&&&&&&&&&&&&&&&&&&
String LOGIN_USER = "knight."; //此为上一任作者的用户名和密码,截止到我最后用发现还能用
&&&&&&&&&&&&&&&&&&
String LOGIN_PWD = "AAbb1122";
&&&&&&&&&&&&&&&&&&
Weixin wx = new Weixin(LOGIN_USER, LOGIN_PWD);
&&&&&&&&&&&&&&&&&&
wx.login();
&&&&&&&&&&&&&&&&&&
wx.getCookiestr();
&&&&&&&&&&&&&&&&&&
//ImgFileForm form = new ImgFileForm();
&&&&&&&&&&&&&&&&&&
//form.setUploadfile(new
File("D:\\Data\\image\\4.jpg"));
&&&&&&&&&&&&&&&&&&
// wx.updateImg(form);
&&&&&&&&&&&&&&&&&&
System.out.println("粉丝数:"+wx.getFans());
&&&&&&&&&&&&&&&&&&
wx.sendMsg(1);//像好友列表中的第几个好友发消息,从0开始
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 httpclient4 https 的文章

 

随机推荐