URIBuilder类:用来构建修改URI
NameValuePair类:用来构建参数
构建URI
import org.apache.http.client.utils.URIBuilder;
import java.net.URI;
import java.net.URISyntaxException;
public class LessonUrl {
public static void main(String[] args) throws URISyntaxException {
URI uri = new URIBuilder("http://www.baidu.com")
.setPath("login")
.build();
System.out.println("uri:"+uri);
URIBuilder uriBuilder = new URIBuilder("http://www.baidu.com")
.setPath("login");
System.out.println("uriBuilder:"+uriBuilder.toString());
}
第一种方式使用URI,需要有build()方法。一般测试时URL前面一部分都是相同,具体的接口路径是不同的。所以setPath()的参数不同就行了。
第二种方式URIBuilder,不需要Build()方法,但是需要toString()方法才是URI。
貌似第一种用的多
GET请求如果有参数时,参数是通过?拼接,多个参数时,每个参数有&拼接。URIBuilder类提供了相应的方法
如果只有一个参数,可以使用addParameter()和setParameter()
uriBuilder.addParameter("name","1111");
System.out.println("第一次add:"+uriBuilder.toString());
uriBuilder.addParameter("name","2222");
System.out.println("第二次add:"+uriBuilder.toString());
uriBuilder.setParameter("name","3333");
System.out.println("set:"+uriBuilder.toString());
从打印结果可以看到,add开头的方法都是新增的,有重复的也会新增。而set方法,参数不存在时新增。存在时修改。
而当有多个参数时,可以使用已s结尾的,并且需要和NameValuePair类配合使用,set和add的性质也如上。
uriBuilder.setParameters(new BasicNameValuePair("name","111"),
new BasicNameValuePair("test","22222"));
System.out.println("setParameters:"+uriBuilder.toString());
List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
BasicNameValuePair b1 = new BasicNameValuePair("name","111");
BasicNameValuePair b2 = new BasicNameValuePair("test","333");
nameValuePairList.add(b1);
nameValuePairList.add(b2);
uriBuilder.setParameters(nameValuePairList);
System.out.println("setParameters数组:"+uriBuilder.toString());
BasicNameValuePair类是NameValuePair接口的实现类
第一种方式是直接传BasicNameValuePair
第二种是传递一个NameValuePair的List
第二种会比较常用,POST请求传递参数也需要这样,不过调用的方法不同。