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,自动登录)。调用getUrlResponse方法可以获取HttpWebResponse请求对象,调用getUrlRespHtml方法可以获取请求获得的html内容。还可以设置代理IP地址。
在易语言中实现HTTP访问并携带Cookie的功能,可以更好地处理登录状态、个性化设置等需要持久化用户信息的场景。 该模块可能包含了以下核心知识点: 1. **HTTP请求**:易语言提供了发送HTTP请求的函数,如`发送HTTP...
本教程将深入探讨如何在Eclipse平台上使用OkHttp进行简单的请求封装和Cookie管理,以实现更加便捷、高效的应用程序网络通信。 首先,我们了解下OkHttp的基本用法。OkHttp通过构建Request对象来定义网络请求,然后...
Android使用Http请求登录,则通过登录成功获取Cookie并同步,可以是下一次不用登录也可以查看到个人信息,注:如果初始化加载登录,可通过缓存Cookie信息来验证是否要加载登录界面。Cookie信息包含了你登录的信息。...
Java 中 HTTP 请求带 Cookie 的例子 在 Java 中进行 HTTP 请求时,带上 Cookie 是非常常见的操作。今天,我们将分享一个 Java 中 HTTP 请求带 Cookie 的例子,希望对大家有所帮助。 什么是 Cookie 在了解 Java 中...
一,cookie和session的区别 cookie在客户的浏览器上,session存在服务器上 cookie是不安全的,且有...能够请求到登录后的界面 带上cookie和session的弊端: 一个cookie和session往往和一个用户对应,访问太快容易被
6. **携带Cookie访问其他链接**:一旦登录成功,你可以创建一个新的`HttpGet`请求,这次同样将之前保存cookie的`HttpContext`传递给`execute`方法。`HttpClient`会自动将cookie添加到请求头中,这样服务器就能识别出...
HTML登录页面结合Ajax异步请求和.NET Form验证以及JavaScript处理Cookie是Web开发中常见的功能实现。这个DemoLogin项目提供了一个实例,展示了如何在不刷新页面的情况下进行用户验证,并且利用Cookie来存储和读取...
在Android的WebView中,虽然默认情况下会处理HTTP响应中的cookie,但并不会自动将它们应用于后续的HTTP请求。因此,我们需要手动干预,以确保原生登录的cookie能够在WebView中得到应用和保持。 以下是一些实现原生...
【标题】"Dubbox跨域请求、Cookie设置"所涉及的知识点主要集中在分布式服务框架Dubbo的跨域问题处理和Cookie的配置上。Dubbox是阿里巴巴开源的一个基于Dubbo的扩展,提供了更多的特性,如REST支持、Zookeeper注册...
本文将详细介绍如何使用HttpClient在Android中实现网络请求,并通过Cookie来维持会话状态,以便进行持久化的用户登录。 首先,我们需要了解HttpClient的基本用法。HttpClient是一个强大的HTTP客户端库,它允许...
这样,服务器通过检查请求中的Cookie就能识别出用户的身份,从而保持登录状态。 描述中提到的“登录第一个帐户,保存Cookie;登录第二个帐户,保存Cookie”,是指在实现多账户切换的场景下,每个账户登录后,都会在...
在C#编程中,网页登录并自动保存Cookie是一项常见... 登录后,你可以继续使用同一个`HttpClient`实例发送其他请求,因为`CookieContainer`会自动添加之前保存的Cookie到请求头。 ```csharp // 示例:获取个人资料页面 ...
在Go语言中,进行HTTP请求时,我们常常需要处理与Cookie相关的任务,比如模拟用户登录、保持会话状态等。本篇文章将详细讲解如何利用Go的`net/http`包实现带有Cookie的HTTP请求封装,以及如何进行网页抓取。 首先,...
在处理网络请求时,有时我们需要携带Cookie来保持用户登录状态或处理其他需要持久化信息的情况。本篇文章将深入探讨如何使用Volley进行带Cookie和不带Cookie的网络请求。 ### 1. Volley的基础概念 Volley的核心...
5. **发送登录请求**:使用构造好的`HttpWebRequest`对象发送登录请求,并保存返回的Cookie。 ```csharp HttpWebResponse response = (HttpWebResponse)request.GetResponse(); CookieContainer cookieContainer...
你可以通过执行JavaScript代码来填写表单并提交登录请求,或者使用`RequestHandler`自定义HTTP请求。 5. **获取cookie**:登录成功后,可以使用`BrowserHost.GetCookieManager`方法获取cookie管理器,然后调用`...
2. **用户身份验证**:当用户访问受保护的页面时,服务器会检查请求中携带的Cookie。如果存在且有效,服务器会根据Cookie中的用户标识,从数据库中查找相应用户的信息,从而确认用户的身份。 具体到PHPWind的实现,...
本文将详细探讨Cookie与WebView的结合使用,以及如何在iOS中实现自动登录。 一、Cookie基础 Cookie是由服务器端发送到客户端(浏览器)的一小段文本信息,用于存储用户的状态信息,如登录状态、个性化设置等。当...
浏览器接收到来自服务器的Cookie数据之后默认将其保存在浏览器缓存中(如果浏览器关闭,缓存消失,Cookie数据消失),只要浏览器不关闭,当我们下一次发送“特定”请求的时候,浏览器负责将Cookie数据发送给WEB...