微信怎么样恢复删除的微信聊天记录删除还原

Android 通过httpclient请求web服务器,并解决用户登录session保持
我的图书馆
Android 通过httpclient请求web服务器,并解决用户登录session保持
[java] package&com.rainet.tiis.&&&&import&java.util.I&&import&java.util.L&&import&java.util.M&&&&import&org.apache.http.HttpR&&import&org.apache.http.NameValueP&&import&org.apache.http.client.CookieS&&import&org.apache.http.client.HttpC&&import&org.apache.http.client.entity.UrlEncodedFormE&&import&org.apache.http.client.methods.HttpG&&import&org.apache.http.client.methods.HttpP&&import&org.apache.http.client.params.HttpClientP&&import&org.apache.http.cookie.C&&import&org.apache.http.impl.client.DefaultHttpC&&import&org.apache.http.params.BasicHttpP&&import&org.apache.http.params.HttpConnectionP&&import&org.apache.http.params.HttpP&&import&org.apache.http.params.HttpProtocolP&&import&org.apache.http.protocol.HTTP;&&import&org.apache.http.util.EntityU&&&&import&android.util.L&&&&/**&&*&@project:&&&&&&&&&&&&&&&&&&&&TIIS&&&*&@Title:&&&&&&&&&&&&&&&&&&&&&&SimpleClient.java&&&&&&&&&*&@Package&&&&&&&&&&&&&&&&&&&&&com.rainet.tiis.network&&&&&&&*&@Description:&&&&&&&&&&&&&&&&HTTP请求factory&&*&@author&&&&&&&&&&&&&&&&&&&&&&杨贵松&&&&&*&@date&&&&&&&&&&&&&&&&&&&&&&&&&下午12:39:23&&&*&@version&&&&&&&&&&&&&&&&&&&&&V1.0&&*/&&public&class&SimpleClient&{&&&&&&private&static&HttpParams&httpP&&&&&&private&static&DefaultHttpClient&httpC&&&&&&private&static&String&JSESSIONID;&//定义一个静态的字段,保存sessionID&&&&&&&&/**&&&&&&*&@Title:&&&&&&&&&&&&&&getHttpClient&&&&&&&*&@author&&&&&&&&&&&&&&杨贵松&&&&&&*&@date&&&&&&&&&&&&&&&&&下午1:11:18&&&&&&*&@Description:&&&&&&&&获取HttpClient&&&&&&*&@return&&&&&&*&@throws&Exception&&&&&&&*&HttpClient&&&&&&&&&&&&&&&返回&&&&&&*/&&&&&&public&static&HttpClient&getHttpClient()&throws&Exception&{&&&&&&&&&&//&创建&HttpParams&以用来设置&HTTP&参数(这一部分不是必需的)&&&&&&&&&&httpParams&=&new&BasicHttpParams();&&&&&&&&&&//&设置连接超时和&Socket&超时,以及&Socket&缓存大小&&&&&&&&&&HttpConnectionParams.setConnectionTimeout(httpParams,&20&*&1000);&&&&&&&&&&HttpConnectionParams.setSoTimeout(httpParams,&20&*&1000);&&&&&&&&&&HttpConnectionParams.setSocketBufferSize(httpParams,&8192);&&&&&&&&&&//&设置重定向,缺省为&true&&&&&&&&&&HttpClientParams.setRedirecting(httpParams,&true);&&&&&&&&&&//&设置&user&agent&&&&&&&&&&String&userAgent&=&"Mozilla/5.0&(W&U;&Windows&NT&5.1;&zh-CN;&rv:1.9.2)&Gecko/&Firefox/3.6";&&&&&&&&&&HttpProtocolParams.setUserAgent(httpParams,&userAgent);&&&&&&&&&&//&创建一个&HttpClient&实例&&&&&&&&&&//&注意&HttpClient&httpClient&=&new&HttpClient();&是Commons&HttpClient&&&&&&&&&&//&中的用法,在&Android&1.5&中我们需要使用&Apache&的缺省实现&DefaultHttpClient&&&&&&&&&&httpClient&=&new&DefaultHttpClient(httpParams);&&&&&&&&&&return&httpC&&&&&&}&&&&&&&&/**&&&&&&*&@Title:&&&&&&&&&&&&&&doGet&&&&&&&*&@author&&&&&&&&&&&&&&杨贵松&&&&&&*&@date&&&&&&&&&&&&&&&&&下午12:39:58&&&&&&*&@Description:&&&&&&&&doGet请求&&&&&&*&@param&url&&&&&&*&@param&params&&&&&&*&@return&&&&&&*&@throws&Exception&&&&&&&*&String&&&&&&&&&&&&&&&返回&&&&&&*/&&&&&&@SuppressWarnings("rawtypes")&&&&&&public&static&String&doGet(String&url,&Map&params)&throws&Exception&{&&&&&&&&&&/*&建立HTTPGet对象&*/&&&&&&&&&&String&paramStr&=&"";&&&&&&&&&&if&(params&!=&null)&{&&&&&&&&&&&&&&Iterator&iter&=&params.entrySet().iterator();&&&&&&&&&&&&&&while&(iter.hasNext())&{&&&&&&&&&&&&&&&&&&Map.Entry&entry&=&(Map.Entry)&iter.next();&&&&&&&&&&&&&&&&&&Object&key&=&entry.getKey();&&&&&&&&&&&&&&&&&&Object&val&=&entry.getValue();&&&&&&&&&&&&&&&&&&paramStr&+=&paramStr&=&"&"&+&key&+&"="&+&&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&&&&&if&(!paramStr.equals(""))&{&&&&&&&&&&&&&&paramStr&=&paramStr.replaceFirst("&",&"?");&&&&&&&&&&&&&&url&+=&paramS&&&&&&&&&&}&&&&&&&&&&HttpGet&httpRequest&=&new&HttpGet(url);&&&&&&&&&&String&strResult&=&"doGetError";&&&&&&&&&&/*&发送请求并等待响应&*/&&&&&&&&&&HttpResponse&httpResponse&=&httpClient.execute(httpRequest);&&&&&&&&&&/*&若状态码为200&ok&*/&&&&&&&&&&if&(httpResponse.getStatusLine().getStatusCode()&==&200)&{&&&&&&&&&&&&&&/*&读返回数据&*/&&&&&&&&&&&&&&strResult&=&EntityUtils.toString(httpResponse.getEntity());&&&&&&&&&&}&else&{&&&&&&&&&&&&&&strResult&=&"Error&Response:&"&+&httpResponse.getStatusLine().toString();&&&&&&&&&&}&&&&&&&&&&Log.v("strResult",&strResult);&&&&&&&&&&return&strR&&&&&&}&&&&&&&&/**&&&&&&*&@Title:&&&&&&&&&&&&&&doPost&&&&&&&*&@author&&&&&&&&&&&&&&杨贵松&&&&&&*&@date&&&&&&&&&&&&&&&&&下午12:39:38&&&&&&*&@Description:&&&&&&&&doPost请求&&&&&&*&@param&url&&&&&&*&@param&params&&&&&&*&@return&&&&&&*&@throws&Exception&&&&&&&*&String&&&&&&&&&&&&&&&返回&&&&&&*/&&&&&&public&static&String&doPost(String&url,&List&NameValuePair&&params)&throws&Exception&{&&&&&&&&&&/*&建立HTTPPost对象&*/&&&&&&&&&&HttpPost&httpRequest&=&new&HttpPost(url);&&&&&&&&&&String&strResult&=&"doPostError";&&&&&&&&&&/*&添加请求参数到请求对象&*/&&&&&&&&&&if&(params&!=&null&&&&params.size()&&&0)&{&&&&&&&&&&&&&&httpRequest.setEntity(new&UrlEncodedFormEntity(params,&HTTP.UTF_8));&&&&&&&&&&}&&&&&&&&&&if(null&!=&JSESSIONID){&&&&&&&&&&&&&&httpRequest.setHeader("Cookie",&"JSESSIONID="+JSESSIONID);&&&&&&&&&&}&&&&&&&&&&/*&发送请求并等待响应&*/&&&&&&&&&&HttpResponse&httpResponse&=&httpClient.execute(httpRequest);&&&&&&&&&&/*&若状态码为200&ok&*/&&&&&&&&&&if&(httpResponse.getStatusLine().getStatusCode()&==&200)&{&&&&&&&&&&&&&&/*&读返回数据&*/&&&&&&&&&&&&&&strResult&=&EntityUtils.toString(httpResponse.getEntity());&&&&&&&&&&&&&&/*&获取cookieStore&*/&&&&&&&&&&&&&&CookieStore&cookieStore&=&httpClient.getCookieStore();&&&&&&&&&&&&&&List&Cookie&&cookies&=&cookieStore.getCookies();&&&&&&&&&&&&&&for(int&i=0;i&cookies.size();i++){&&&&&&&&&&&&&&&&&&if("JSESSIONID".equals(cookies.get(i).getName())){&&&&&&&&&&&&&&&&&&&&&&JSESSIONID&=&cookies.get(i).getValue();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&&&&&Log.v("strResult",&strResult);&&&&&&&&&&return&strR&&&&&&}&&&&} &5楼
4天前 13:48发表
经过测试发现用doPost登陆之后,用doGet检测该用户是否登陆,必须用的是同一个httpclient才可以,否则还是返回没有登陆,所以getHttpClient这个方法应该用单例模式,4楼
我的cookies怎么为空啊3楼
额 我们服务器没,没有返回cookies值,只有session值,怎么搞啊,楼主2楼
[java] if(null&!=&JSESSIONID){&&&&&&&&&&&&&&&&httpRequest.setHeader("Cookie",&"JSESSIONID="+JSESSIONID);&&&&&&&&&&&&}&&&&&&for(int&i=0;i&cookies.size();i++){&&&&&&&&&&&&&&&&&&&&if("JSESSIONID".equals(cookies.get(i).getName())){&&&&&&&&&&&&&&&&&&&&&&&&JSESSIONID&=&cookies.get(i).getValue();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&}&&就缺这两串代码,泪奔了
TA的推荐TA的最新馆藏[转]&httpClient session保持问题,登陆后,再次提交表单出现返回到登陆页面
DefaultHttpClient client = new DefaultHttpClient(new ThreadSafeClientConnManager());
//登陆参数代码省略
int statuscode = httpresponse.getStatusLine().getStatusCode();/* 登录状态返回 */
CookieStore cookiestore=client.getCookieStore();
List&Cookie& cookies = client.getCookieStore().getCookies();
if (cookies.isEmpty()) {
throw new BusiException(&智联招聘 登录失败,请检查用户名、密码及验证码!&);
/* 处理重链接 */
if ((statuscode == HttpStatus.SC_MOVED_TEMPORARILY)
|| (statuscode == HttpStatus.SC_MOVED_PERMANENTLY)
|| (statuscode == HttpStatus.SC_SEE_OTHER)
|| (statuscode == HttpStatus.SC_TEMPORARY_REDIRECT)) {
HttpEntity entity = httpresponse.getEntity();
//String body = EntityUtils.toString(entity);
/*String newUrl=HttpClientService.getNewUrl(httpresponse);重连接地址获取homePage.asp*/
/*跳转到职位发布页面/s/vacainfo/PositionAdd.asp 并发布职位*/
HttpResponse httpDoVacancyResponse = HttpClientService.doHttpPost(client,
&/s/vacainfo/PositionAddPost.asp&, this.doZhiLianData(dsZhiLian), code,cookiestore);
int doVacancyStatusCode = httpDoVacancyResponse.getStatusLine().getStatusCode();
HttpEntity doVacancyEntity = httpDoVacancyResponse.getEntity();
String doVacancybody = EntityUtils.toString(doVacancyEntity);
String newUrl=HttpClientService.getNewUrl(httpDoVacancyResponse);
if(newUrl.indexOf(&PositionCheck.asp&)&0)
new Exception(&提交职位信息出现错误。&);
(doVacancybody);
session就是cookies?晕啊。应该好好去看看书在,先把cookies和session弄清楚在说吧。
你可以跟踪下看看你返回的cookies是否和浏览器缓存的cookies一致。一直返回登录是因为你没有得到cookies
--- 共有 1 条评论 ---
cookies在登陆后是有内容的,List&Cookie& cookies = client.getCookieStore().getCookies();取到了登陆后的cookie,只是在登陆后,再次post一个表单时出现了跳转到登陆页面!
登录失败,服务器端响应没有返回set-cookie字段,导致之后的请求都没带上正确的cookie字段
--- 共有 1 条评论 ---
登陆确定成功了,而且都已经出现重连接到了新的页面,然后我再在新的页面提交表单,被再次返回到登陆页面了!
httpclient 两种方法保持session 。
一种单例的DefaultHttpClient
另一种,登录成功后,保持Cookie 上次请求时加上去。
ok。楼主得好好看文档。注重基础。有些问题可以自己解决的。
--- 共有 1 条评论 ---
我另外个网站同样的代码实现了,登陆
在 做其他的表达提交,目前就这个网站有问题,具体问题还在进一步分析!谢谢您的回答
HttpClient:
1.不需要自己管理cookie这些东西的 2.重定向也是不需要管理的,除了一些特殊的(自动重定向不生效的跳转)跳转需要手动,其它的一律自动 3,仔细分析登录前后的cookie差异,header的差异(注意Referer头)
你确定你请求的地址是固定的?因为有些做了集群的二级子域名是变化的
--- 共有 3 条评论 ---
: 你好,可以告诉我怎么解决的吗?我也遇到同样的问题~
怎么解决的 请教.
谢谢解决了
用同一个client对象就行了,不销毁就行使用HttpClient模拟网站登陆sina邮箱(保持远程服务器session和cookie)_Windows_ThinkSAAS
使用HttpClient模拟网站登陆sina邮箱(保持远程服务器session和cookie)
使用HttpClient模拟网站登陆sina邮箱(保持远程服务器session和cookie)
内容来源: 网络
* 通过URL取得网页内容
private void HttpRequestURL()
String postData ="";
if(_tc.getPostData()!=null && !_tc.getPostData().equals(""))
postData = _tc.getPostData();
if(_tc.getPostMethod()==null || _tc.getPostMethod().equals(""))
_tc.setPostMethod("GET");
String postUrl = _tc.getUrl();
if(_tc.getPostMethod().toUpperCase().equals("GET") && !postData.equals(""))
if(postUrl.indexOf("?") & -1)
postUrl +="&"+postD
postUrl +="?"+postD
System.out.println("--------Transfer Start------------------------------------------------------------------");
System.out.println("页面解析准备就绪...");
System.out.println("Url:"+postUrl);
System.out.println("PostData:"+postData);
System.out.println("PostMethod:"+_tc.getPostMethod());
System.out.println("Encoding:"+_tc.getEncoding());
System.out.println("--------------------------------------------------------------------------------------");
HttpClient httpClient = new HttpClient();
if(_tc.getPostMethod().toUpperCase().equals("GET"))
if(!postData.equals(""))
if(postUrl.indexOf("?") & -1)
postUrl +="&"+postD
postUrl +="?"+postD
GetMethod getHC = new GetMethod(postUrl);
getHC.setFollowRedirects(false);
getHC.getParams().setHttpElementCharset("UTF-8");
//发送Cookie
StringBuilder cookieValue = new StringBuilder();
for(String key : this.cookie.keySet()){
cookieValue.append(key);
cookieValue.append("=");
cookieValue.append(this.cookie.get(key));
cookieValue.append(";");
getHC.setRequestHeader("Cookie", cookieValue.toString());
getHC.setRequestHeader("User-Agent","Mozilla/4.0 ( MSIE 6.0; Windows 2000)");
int statusC
statusCode = httpClient.executeMethod(getHC);
Header[] headers = getHC.getResponseHeaders();
for(Header header : headers){
if(header.getElements().length & 1){
HeaderElement[] elements = header.getElements();
for(HeaderElement element : elements){
checkCookie(element);
checkCookie(header);
if(statusCode==HttpStatus.SC_OK){
String charset ="utf-8";
if(_tc.getEncoding() == GB2312)
charset ="gb2312";
else if(_tc.getEncoding() == UTF8)
charset ="utf-8";
else if(_tc.getEncoding() == BIG5)
charset ="big5";
charset ="utf-8";
System.out.println("charset :"+ charset);
InputStreamReader isr = new
InputStreamReader(getHC.getResponseBodyAsStream(), charset); //
设置读取流的编码格式,自定义编码
// 使用字符读取方式,循环读取源文件内容
StringBuffer sb = new StringBuffer();
while ((b = isr.read()) != -1)//顺序读取文件text里的内容并赋值给整型变量b,直到文件结束为止。
if (b & 32 && b!= 10 && b != 13 && b != 9) b = 32;//过滤掉一些换行等符号
//if ( b== 10 || b== 13 || b== 9) b = 32;//过滤掉一些换行等符号
sb.append((char)b);
isr.close();
getHC.abort();
//取得采集的内容
= sb.toString();
//System.out.println("content :"+_content);
if(statusCode == 301 || statusCode == 302){
Header locationHeader = getHC.getResponseHeader("location");
_tc.setUrl(locationHeader.getValue());
_tc.setPostData("");
_tc.setPostMethod("GET");
HttpRequestURL();//重新请求新网页
} catch (HttpException e2) {
e2.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
PostMethod postHC = new PostMethod(postUrl);
postHC.setFollowRedirects(false);
postHC.getParams().setHttpElementCharset("UTF-8");
//发送Cookie
StringBuilder cookieValue = new StringBuilder();
for(String key : this.cookie.keySet()){
cookieValue.append(key);
cookieValue.append("=");
cookieValue.append(this.cookie.get(key));
cookieValue.append(";");
postHC.setRequestHeader("Cookie", cookieValue.toString());
postHC.setRequestHeader("User-Agent","Mozilla/4.0 ( MSIE 6.0; Windows 2000)");
//post数据到服务器
if(postData!=null && !postData.equals("")){
HashMap&String,String& argv =
new HashMap&String,String&();
String[] arrParams = postData.split("&");
for(int i=0;i&arrParams.i++){
if(arrParams[i] == null || arrParams[i].equals(""))
else if(arrParams[i].indexOf("=") & -1)
String[] nameValue = arrParams[i].split("=");
if(nameValue.length & 1)
argv.put(nameValue[0], nameValue[1]);
if(argv!=null){
NameValuePair[] nameValuePair = new NameValuePair[argv.size()];
int i = 0;
for(String key : argv.keySet()){
nameValuePair[i] = new NameValuePair(key, argv.get(key));
postHC.setRequestBody(nameValuePair);
int statusC
statusCode = httpClient.executeMethod(postHC);
Header[] headers = postHC.getResponseHeaders();
for(Header header : headers){
if(header.getElements().length & 1){
HeaderElement[] elements = header.getElements();
for(HeaderElement element : elements){
checkCookie(element);
checkCookie(header);
if(statusCode==HttpStatus.SC_OK){
String charset ="utf-8";
if(_tc.getEncoding() == GB2312)
charset ="gb2312";
else if(_tc.getEncoding() == UTF8)
charset ="utf-8";
else if(_tc.getEncoding() == BIG5)
charset ="big5";
charset ="utf-8";
InputStreamReader isr = new
InputStreamReader(postHC.getResponseBodyAsStream(), charset); //
设置读取流的编码格式,自定义编码
// 使用字符读取方式,循环读取源文件内容
StringBuffer sb = new StringBuffer();
while ((b = isr.read()) != -1)//顺序读取文件text里的内容并赋值给整型变量b,直到文件结束为止。
if (b & 32 && b!= 10 && b != 13 && b != 9) b = 32;//过滤掉一些换行等符号
//if ( b== 10 || b== 13 || b== 9) b = 32;//过滤掉一些换行等符号
sb.append((char)b);
isr.close();
postHC.abort();
//取得采集的内容
= sb.toString();
if(statusCode == 301 || statusCode == 302){
Header locationHeader = postHC.getResponseHeader("location");
_tc.setUrl(locationHeader.getValue());
_tc.setPostData("");
_tc.setPostMethod("GET");
HttpRequestURL();//重新请求新网页
} catch (HttpException e2) {
e2.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
private void checkCookie(NameValuePair entry){
if(entry.getName().equals("Set-Cookie")){
//这个就是Cookie了
String value = entry.getValue();
if(value.indexOf(";") &0 )
value = value.substring(0,value.indexOf(";"));
System.out.println(entry.toString());
String[] cookieNameValuePair = value.split("=");
if(cookieNameValuePair.length & 1){
if(cookieNameValuePair[1].equals("deleted")){
this.cookie.remove(cookieNameValuePair[0]);
this.cookie.put(cookieNameValuePair[0], cookieNameValuePair[1]);
this.cookie.remove(cookieNameValuePair[0]);
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信

我要回帖

更多关于 微信查询删除聊天记录 的文章

 

随机推荐