当前位置: 代码迷 >> Java Web开发 >> 怎么Httpclient 与浏览器共享 Session?
  详细解决方案

怎么Httpclient 与浏览器共享 Session?

热度:4485   发布时间:2016-04-10 23:05:38.0
如何Httpclient 与浏览器共享 Session???
我用httpclient登录某个网站后,如何跳到该网站,而不需要再登录。


http请求代码
@SuppressWarnings("finally")   
    public static String sendGetRequest(String requestUrl) {   
        long responseLength = 0;       //响应长度   
        String responseContent = null; //响应内容   
        HttpClient httpClient = new DefaultHttpClient(); //创建默认的httpClient实例   
        HttpGet httpGet = new HttpGet(requestUrl);       //创建HttpGet   
        try {   
            HttpResponse response = httpClient.execute(httpGet); //执行GET请求   
            HttpEntity entity = response.getEntity();            //获取响应实体  
           // new DefaultHttpClient().getco
            if (null != entity) {   
                responseLength = entity.getContentLength();   
                responseContent = EntityUtils.toString(entity, "UTF-8");   
                EntityUtils.consume(entity); //Consume response content   
            }   
            System.out.println("请求地址: " + httpGet.getURI());   
            System.out.println("响应状态: " + response.getStatusLine());   
            System.out.println("响应长度: " + responseLength);   
            System.out.println("响应内容: " + responseContent);   
        } catch (ClientProtocolException e) {   
            //该异常通常是协议错误导致   
            //比如构造HttpGet对象时传入的协议不对(将"http"写成"htp")或者服务器端返回的内容不符合HTTP协议要求等   
            e.printStackTrace();   
        } catch (ParseException e) {   
            e.printStackTrace();   
        } catch (IOException e) {   
            //该异常通常是网络原因引起的,如HTTP服务器未启动等   
            e.printStackTrace();   
        } finally {   
            httpClient.getConnectionManager().shutdown(); //关闭连接,释放资源   
            return responseContent;   
        } 
    }
public static void main(String[] arg)throws Exception{
String url = "http://127.0.0.1:8080/mall/servlet/Login?name=wgliu&md5=da891df0afd256c4&pwd=111";
String str = RequestTest.callConnector(url);
System.out.println(str);

}


执行上面代码后 再用浏览器打开页面还是要登录

------解决方案--------------------
你httpwatch 先浏览器模拟登录看看,是不是需要什么sesseion 或者变量等等的数据。
------解决方案--------------------
当然要登录,会话用sessionid来标志,以连接为单位,你这客户端登录和你的浏览器会话一点关系都没有,即不是同一个连接,更不可能是同一个sessionid,当然要重新登录

你的问题答案:不行,不能共享,因为你即不能控制服务器返回的响应,也不能控制浏览器客户端发出去的东西
  相关解决方案