/*
* ====================================================================
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.http.examples.client;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
/**
* A example that demonstrates how HttpClient APIs can be used to perform
* form-based logon.
*/
public class ClientFormLogin {
public static void main(String[] args) throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("https://portal.sun.com/portal/dt");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println("Login form get: " + response.getStatusLine());
EntityUtils.consume(entity);
System.out.println("Initial set of cookies:");
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
}
}
HttpPost httpost = new HttpPost("https://portal.sun.com/amserver/UI/Login?" +
"org=self_registered_users&" +
"goto=/portal/dt&" +
"gotoOnFail=/portal/dt?error=true");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("IDToken1", "username"));
nvps.add(new BasicNameValuePair("IDToken2", "password"));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
response = httpclient.execute(httpost);
entity = response.getEntity();
System.out.println("Login form get: " + response.getStatusLine());
EntityUtils.consume(entity);
System.out.println("Post logon cookies:");
cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
System.out.println("- " + cookies.get(i).toString());
}
}
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
}
引自http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientFormLogin.java
分享到:
相关推荐
1. Java 层(根目录 device\java\android\android\webkit) * BrowserFrame.java:BrowserFrame 对象是对 WebCore 库中的 Frame 对象的 Java 层封装,用于创建 WebCore 中定义的 Frame,以及为该 Frame 对象提供 ...
libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。 PHP自带curl扩展,但java没有curl扩展,这个工程的目的,就是将...
在Android平台上进行浏览器开发是一项复杂而有趣的任务,它涉及到Android系统的基础知识、Java编程语言以及Web相关的技术。本文将深入探讨Android浏览器开发设计的核心概念、关键技术和实现步骤。 首先,我们要理解...
Curl库在Android应用开发中主要用作网络通信的底层支持,它允许开发者通过HTTP/HTTPS等方式发送请求,获取服务器的数据,甚至处理复杂的HTTP头、POST请求、cookies等。这使得开发者无需深入了解网络协议的细节,就...
Java语言的设计理念是简洁、健壮和高效,这使得它在各种应用领域都有广泛应用,包括桌面应用、企业级应用、移动应用(尤其是Android平台)、云计算服务和Web应用程序。 Java Web开发是利用Java技术构建基于Web的...
Android提供了三种主要的网络接口供开发者使用,它们分别是:java.net.*(标准Java接口)、org.apache接口(通常指的是HttpClient库)和Android.net.*(Android特有网络接口)。接下来,我们将详细讨论这三种网络通信...
在Android中处理HTTP请求时,可能需要管理和维护Cookies。可以使用`HttpURLConnection`自带的方法来实现。 ```java // 发送带有Cookie的请求 String cookies = "key=value; expires=date"; httpURLConnection....
在Android开发中,与服务器进行交互是常见的任务,而`jsessionId`是Web应用程序中用于跟踪用户会话的一种机制。本文将详细讲解如何在Android客户端获取`jsessionId`以及如何在后续请求中发送`jsessionId`,以保持...
在Android开发中,JNI(Java Native Interface)是一种技术,允许Java代码和其他编程语言(如C++)进行交互。JNI在很多场景下都很有用,比如优化性能、调用系统底层库或者像本例中那样,利用C/C++库来实现特定功能。...
在项目中,你可能还会遇到缓存、Cookies管理、自定义Header、注入JavaScript接口等问题。例如,设置缓存模式: ```java webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); ``` 通过`...
HttpClient是Apache基金会开发的一个HTTP客户端库,广泛应用于Java和Android平台。在Android中,HttpClient库提供了与Web服务器进行HTTP通信的能力,支持各种HTTP方法(如GET、POST等),以及处理cookies、重定向、...
`java`目录包含了Java接口和控件,它们是Android应用与Chromium内核交互的桥梁。`cpp`目录包含C++代码,这部分代码主要是Chromium的原生库,用于处理底层的网络请求和渲染工作。`res`目录则存储了应用的资源文件,如...
Android 4.0 Browser的架构基于Chromium开源项目,其核心组件包括渲染引擎(WebKit)、JavaScript引擎(V8)以及与Android系统交互的Java层。源代码中,你可以看到BrowserActivity作为主要的入口点,处理用户的交互...
该APP的设计是基于Android平台的,使用了数据抓包、Cookies模拟登陆、Jsoup数据解析、SQLiteDatabase等技术。系统实现了教务管理接入、成绩查询、空教室查询、课表查询等功能,用户可以随时随地查询相关信息。 在...
### Android Cookie 获取与设置以及 WebView 的 Cookie 同步 在 Android 开发中,Cookie 的管理和同步对于维护用户会话状态至关重要。特别是在使用 HttpClient 发起网络请求时,保持客户端与服务器端 Session 的...
在Android应用开发中,使用HttpURLConnection访问网络时,有时候我们需要实现类似浏览器的自动保持会话功能,以便在用户登录后,后续的网络请求能够自动携带上登录状态,无需每次都重新登录。这种功能在处理需要持久...
- 解决使用OkHttpUtils的cookies值无法持久化的问题; - 解决多线程使用SharedPreferences不安全的问题。 2. **项目名称**:爱回扣客户端 - **开发工具**:AS+GIT - **项目描述**:一款购物返利的应用程序,被...