使用HttpClient4.X模拟浏览器登录使用Google Alert(二)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 使用HttpClient4.X模拟浏览器登录使用Google Alert(二)

使用HttpClient4.X模拟浏览器登录使用Google Alert(二)

 2013/9/14 0:46:26  cjcrobin  程序员俱乐部  我要评论(0)
  • 摘要:终于算是熬到了礼拜五了,写了一天的文档,都快疯掉了。在前一篇文章中我们已经完成了登录操作,现在我们就继续登录之后的操作,比如创建Alert,修改Alert,删除Alert。这里的操作基本上都是差不多的,所以我们就简单说下创建Alert。创建Alert也同样是发送POST请求。所有的操作基本上都和之前的登录操作差不多,获取HTTPPOST地址,添加HTTPHeader,然后发送请求。唯一不同的地方在于,我们需要将之前登录后的Cookies信息也同时传过去,只有这样
  • 标签:使用 Google 浏览 使用google client 浏览器 HTTP
终于算是熬到了礼拜五了,写了一天的文档,都快疯掉了。

在前一篇文章中我们已经完成了登录操作,现在我们就继续登录之后的操作,比如创建Alert,修改Alert,删除Alert。这里的操作基本上都是差不多的,所以我们就简单说下创建Alert。

创建Alert也同样是发送POST请求。所有的操作基本上都和之前的登录操作差不多,获取HTTP POST地址,添加HTTP Header,然后发送请求。唯一不同的地方在于,我们需要将之前登录后的Cookies信息也同时传过去,只有这样,对方服务器才会认为模拟的帐号是已经登录的。

在HttpClient3.X中,我们还需要手动的处理Cookies的问题,但是在HttpClient4.X中只要我们进行简单的设置,就能够自动处理Cookies的问题。

class="java" name="code">hc.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH);


如果使用的是4.3或者之后的版本,建议不是用CookiePolicy.BEST_MATCH,CookiePolicy这个类在这个版本之中已经显示被抛弃,建议使用CookieSpecs.BEST_MATCH。

注意的是,Cookies的Policy是在登录之前就应该设置好的。

接下来就是继续设置参数。

List<BasicNameValuePair> formParams = new ArrayList<BasicNameValuePair>();
formParams.add(new BasicNameValuePair("q", alertName));
formParams.add(new BasicNameValuePair("t", resultType));
formParams.add(new BasicNameValuePair("f", frequency));
formParams.add(new BasicNameValuePair("l", "0"));
formParams.add(new BasicNameValuePair("e", mailAddress));


接下来创建经过URL编码的参数实体,并创建POST请求实体。

HttpEntity entity = new UrlEncodedFormEntity(formParams, "UTF-8");
HttpPost request = new HttpPost(CommonConst.URL_ALERT_CREATE);
request.setEntity(entity);


然后就可以执行请求了,这些基本都和第一篇讲的差不多。

HttpResponse hr = hc.execute(request, context);


然后我们就能够在Alert的管理界面中看到Alert添加成功了。

最后还有一点需要注意的就是,每一次请求完要记得将请求处理掉,否则再次发送请求是将有可能抛出错误。一旦调用了consume方法,就会将这个Entity所持有的所有资源全部释放并归还给Connection对象给HttpClient,同时也将底层所使用的各种输入输出流给关闭了。这样子的话,就有资源去处理其他请求。

EntityUtils.consume(hr.getEntity());


在这里这种写法也是不安全的,因为HttpClient并无法保证getEntity不会返回null。

That's all.
希望这两篇对大家有所帮助。

Note:同步新浪博客
上一篇: Java中System.getProperties()的简介 下一篇: 没有下一篇了!
发表评论
用户名: 匿名