`

http 请求(登录,cookie)

 
阅读更多
public class SingleHttpClient {

	private static DefaultHttpClient httpClient = new DefaultHttpClient();
	private static SingleHttpClient shc = new SingleHttpClient();
	private static CookieStore cookieStore; //cookie本地cookie

	public static SingleHttpClient getInstance() {
		if (cookieStore != null) {
			httpClient.setCookieStore(cookieStore);
		}
		return shc;
	}

	private SingleHttpClient() {
		BasicHttpParams httpParams = (BasicHttpParams) httpClient.getParams();
		HttpConnectionParams.setConnectionTimeout(httpParams, 5000); 
		HttpConnectionParams.setSoTimeout(httpParams, 5000); 
	}

	/**
	 * 
	 * @param url
	 * @return
	 */
	public synchronized String httpGet(String param, Context context) {
		synchronized (httpClient) {
			if (!PublicUtil.isNetworkAvailable(context))
				return null;
			String url = PublicUtil.getWebRoot() + param; // 我的url
			String response = null;
			// 鍒涘缓HttpGet瀵硅薄
			HttpGet httpGet = new HttpGet(url);
			HttpResponse httpResponse;
			try {
				// 浣跨敤execute鏂规硶鍙戦?HTTP GET璇锋眰锛屽苟杩斿洖HttpResponse瀵硅薄
				long start = new Date().getTime();
				httpResponse = httpClient.execute(httpGet);
				long end = new Date().getTime();
				int statusCode = httpResponse.getStatusLine().getStatusCode();
				if (statusCode == HttpStatus.SC_OK) {
					response = EntityUtils.toString(httpResponse.getEntity(),
							"UTF-8");
				} else {
					PublicUtil.sendMessage(context, PublicUtil.NETWORK_BUSY); // 网络请求超时
				}
				cookieStore = httpClient.getCookieStore();
			} catch (Exception e) {
				e.printStackTrace();
			}
			System.out.println("response=" + response);
			return response;
		}
	}

	public HashMap<String, String> getResponse(Context context, String param) {
		HashMap<String, String> info = null;
		String response = httpGet(param, context);
		System.out.println("response==" + response);
		if (response != null) {
			info = new HashMap<String, String>();
			try {
				JSONObject jobj = new JSONObject(response);
				String code = jobj.getString("code");
				info.put("code", code);
				String msg = jobj.getString("msg");
				info.put("msg", msg);
				if (jobj.getString("data") != null) {
					String data = jobj.getString("data");
					info.put("data", data);
				}
				if (code.equals("-2")) {
					MultipartEntity mpEntity = new MultipartEntity(); 
					String account = "用户名";
					String loginKey = "密码";
						try {
							mpEntity.addPart("account", new StringBody(account));
							mpEntity.addPart("loginKey", new StringBody(
									loginKey));
							Log.i("tcp", "loginKey=" + loginKey);
						} catch (UnsupportedEncodingException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						HashMap<String, String> resp = getResponse(context, mpEntity, "/mobile/login");
						if(resp!=null&&resp.get("code").equals("0"))
						info = getResponse(context, param);
					}
				}
			} catch (Exception e) {
			}
		}
		return info;
	}

	public HashMap<String, String> getResponse(Context context,
			MultipartEntity entity, String url) {
		HashMap<String, String> info = null;
		String response = httpPost(url, entity, context);
		System.out.println("response==" + response);
		if (response != null) {
			info = new HashMap<String, String>();
			String code = null;
			try {
				JSONObject jobj = new JSONObject(response);
				code = jobj.getString("code");
				info.put("code", code);
				String msg = jobj.getString("msg");
				info.put("msg", msg);
				if (jobj.has("data")) {
					String data = jobj.getString("data");
					info.put("data", data);
				}
				if(code.equals("-1")){
					
				}else if (code.equals("-2")) {
					MultipartEntity mpEntity = new MultipartEntity(); 
					String account = "用户名"
					if (!account.equals("")
							&& PublicUtil.isNetworkAvailable(context)) {
						String loginKey = "密码";
						try {
							mpEntity.addPart("account", new StringBody(account));
							mpEntity.addPart("loginKey", new StringBody(
									loginKey));
							Log.i("tcp", "loginKey=" + loginKey);
						} catch (UnsupportedEncodingException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						HashMap<String, String> resp = getResponse(context, mpEntity, "/mobile/login");
						if(resp!=null&&resp.get("code").equals("0"))
						info = getResponse(context, mpEntity, url);
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return info;
	}

	/**
	 * 
	 * 
	 * @param url
	 * @param params
	 *           
	 * @return
	 * @throws Exception
	 */
	public String httpPost(String url, MultipartEntity entity, Context context) {
		synchronized (httpClient) {
			if (!PublicUtil.isNetworkAvailable(context))
				return null;
			String response = null;
			HttpPost httppost = new HttpPost(PublicVariable.webRoot + url);
			HashMap<String, String> map = (HashMap<String, String>) PublicUtil
					.getCallInfo(context).clone();
			map.put("path", url.split("\\?")[0]);
			map.put("reqSize", url.getBytes().length + "");
			Log.i("post", "post:"+ PublicVariable.webRoot+url);
			try {
				// httppost.setEntity(new UrlEncodedFormEntity(params,
				// HTTP.UTF_8));
				httppost.setEntity(entity);
				long start = new Date().getTime();
				// 浣跨敤execute鏂规硶鍙戯拷?HTTP Post璇锋眰锛屽苟杩斿洖HttpResponse瀵硅薄
				HttpResponse httpResponse = httpClient.execute(httppost);
				long end = new Date().getTime();
				map.put("totalConsumed", (end - start) + "");
				int statusCode = httpResponse.getStatusLine().getStatusCode();
				map.put("respStatus", statusCode + "");
				response = EntityUtils.toString(httpResponse.getEntity(),
						"UTF-8");
				Log.i("tcp",
						"statusCode=" + statusCode + ""
								+ response.replace("\n", ""));
				if (statusCode == HttpStatus.SC_OK) {
					
				} else {
					response = null;
					if(statusCode==500)
					PublicUtil.sendMessage(context, PublicUtil.NETWORK_BUSY);
				}
				cookieStore = httpClient.getCookieStore();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			return response;
		}
	}

	

 

分享到:
评论

相关推荐

    c#下的http请求通用类(自动实现保留上次请求cookie,自动登录)

    c#下的http请求通用类(自动实现保留上传请求cookie,自动登录)。调用getUrlResponse方法可以获取HttpWebResponse请求对象,调用getUrlRespHtml方法可以获取请求获得的html内容。还可以设置代理IP地址。

    易语言HTTP访问(带Cookie)模块源码

    在易语言中实现HTTP访问并携带Cookie的功能,可以更好地处理登录状态、个性化设置等需要持久化用户信息的场景。 该模块可能包含了以下核心知识点: 1. **HTTP请求**:易语言提供了发送HTTP请求的函数,如`发送HTTP...

    okhttp请求简单封装和cookie管理

    本教程将深入探讨如何在Eclipse平台上使用OkHttp进行简单的请求封装和Cookie管理,以实现更加便捷、高效的应用程序网络通信。 首先,我们了解下OkHttp的基本用法。OkHttp通过构建Request对象来定义网络请求,然后...

    Andriod的Http请求获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息

    Android使用Http请求登录,则通过登录成功获取Cookie并同步,可以是下一次不用登录也可以查看到个人信息,注:如果初始化加载登录,可通过缓存Cookie信息来验证是否要加载登录界面。Cookie信息包含了你登录的信息。...

    在java中http请求带cookie的例子

    Java 中 HTTP 请求带 Cookie 的例子 在 Java 中进行 HTTP 请求时,带上 Cookie 是非常常见的操作。今天,我们将分享一个 Java 中 HTTP 请求带 Cookie 的例子,希望对大家有所帮助。 什么是 Cookie 在了解 Java 中...

    python中requests模拟登录的三种方式(携带cookie/session进行请求网站)

    一,cookie和session的区别 cookie在客户的浏览器上,session存在服务器上 cookie是不安全的,且有...能够请求到登录后的界面  带上cookie和session的弊端: 一个cookie和session往往和一个用户对应,访问太快容易被

    httpUtil httpclient 登陆携带cookie访问下一个连接

    6. **携带Cookie访问其他链接**:一旦登录成功,你可以创建一个新的`HttpGet`请求,这次同样将之前保存cookie的`HttpContext`传递给`execute`方法。`HttpClient`会自动将cookie添加到请求头中,这样服务器就能识别出...

    html 登录ajax请求继承.net Form验证和JS解析cookie

    HTML登录页面结合Ajax异步请求和.NET Form验证以及JavaScript处理Cookie是Web开发中常见的功能实现。这个DemoLogin项目提供了一个实例,展示了如何在不刷新页面的情况下进行用户验证,并且利用Cookie来存储和读取...

    原生登录cookie保持提供webview使用

    在Android的WebView中,虽然默认情况下会处理HTTP响应中的cookie,但并不会自动将它们应用于后续的HTTP请求。因此,我们需要手动干预,以确保原生登录的cookie能够在WebView中得到应用和保持。 以下是一些实现原生...

    Dubbox跨域请求、Cookie设置

    【标题】"Dubbox跨域请求、Cookie设置"所涉及的知识点主要集中在分布式服务框架Dubbo的跨域问题处理和Cookie的配置上。Dubbox是阿里巴巴开源的一个基于Dubbo的扩展,提供了更多的特性,如REST支持、Zookeeper注册...

    安卓使用httpClient实现网络请求并通过cookie维持对话

    本文将详细介绍如何使用HttpClient在Android中实现网络请求,并通过Cookie来维持会话状态,以便进行持久化的用户登录。 首先,我们需要了解HttpClient的基本用法。HttpClient是一个强大的HTTP客户端库,它允许...

    使用Cookie登录每个帐户只需登录一次,然后可以自由切换登录

    这样,服务器通过检查请求中的Cookie就能识别出用户的身份,从而保持登录状态。 描述中提到的“登录第一个帐户,保存Cookie;登录第二个帐户,保存Cookie”,是指在实现多账户切换的场景下,每个账户登录后,都会在...

    c #网页登录自动保存cookie

    在C#编程中,网页登录并自动保存Cookie是一项常见... 登录后,你可以继续使用同一个`HttpClient`实例发送其他请求,因为`CookieContainer`会自动添加之前保存的Cookie到请求头。 ```csharp // 示例:获取个人资料页面 ...

    Go-go-http自动记录cookie模拟请求http封装

    在Go语言中,进行HTTP请求时,我们常常需要处理与Cookie相关的任务,比如模拟用户登录、保持会话状态等。本篇文章将详细讲解如何利用Go的`net/http`包实现带有Cookie的HTTP请求封装,以及如何进行网页抓取。 首先,...

    volley请求网络,带cookie及不带cookie等各种请求方式

    在处理网络请求时,有时我们需要携带Cookie来保持用户登录状态或处理其他需要持久化信息的情况。本篇文章将深入探讨如何使用Volley进行带Cookie和不带Cookie的网络请求。 ### 1. Volley的基础概念 Volley的核心...

    采集需要登录后的网页(重定向后cookie丢失问题)(

    5. **发送登录请求**:使用构造好的`HttpWebRequest`对象发送登录请求,并保存返回的Cookie。 ```csharp HttpWebResponse response = (HttpWebResponse)request.GetResponse(); CookieContainer cookieContainer...

    C# 调用 Cefsharp浏览器获取登录后的cookie

    你可以通过执行JavaScript代码来填写表单并提交登录请求,或者使用`RequestHandler`自定义HTTP请求。 5. **获取cookie**:登录成功后,可以使用`BrowserHost.GetCookieManager`方法获取cookie管理器,然后调用`...

    phpwind登录cookie演示

    2. **用户身份验证**:当用户访问受保护的页面时,服务器会检查请求中携带的Cookie。如果存在且有效,服务器会根据Cookie中的用户标识,从数据库中查找相应用户的信息,从而确认用户的身份。 具体到PHPWind的实现,...

    Cookie 实现WebView自动登录

    本文将详细探讨Cookie与WebView的结合使用,以及如何在iOS中实现自动登录。 一、Cookie基础 Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,用于存储用户的状态信息,如登录状态、个性化设置等。当...

    利用Cookie实现十天免登录

    浏览器接收到来自服务器的Cookie数据之后默认将其保存在浏览器缓存中(如果浏览器关闭,缓存消失,Cookie数据消失),只要浏览器不关闭,当我们下一次发送“特定”请求的时候,浏览器负责将Cookie数据发送给WEB...

Global site tag (gtag.js) - Google Analytics