先讲原理:
通俗的讲,登录一个需要basic authentication 的url,首次需要账号和密码,然后才能进入,不是首次的一段时间内,不需要密码也可以进入了。
那么用Http 机制来讲的话就是,首先发送一个带有账号和密码的resquest,并且这个账号密码需要base64加密,发送给登录页,返回一个response和cookie,然后用这个cookie直接去做登录。还有其他方法,但是我用这种方法。
注意几个地方:
1是用post还是用get方法发请求。
2不同jar包不要混用
3和看到的登录情况不一样,我这个是先找登录页面去做一次登录,返回来的去其他的url取数据,区分登录页面和真实内容的url,不是同一个url。
4jar包都是org.apche.http开头的
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.1</version>
</dependency>
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apa