【Jsoup】URL地址解析

本文介绍如何使用Java库Jsoup解析URL并获取所需信息。通过示例代码展示如何设置请求参数、执行HTTP请求及处理响应数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题:

怎么样解析URL地址?

2.源代码:

package com.fxrj.email.test;

import com.platform.common.constants.OtherSystemBingdingUrl;
import com.platform.common.exception.HttpConnectException;
import com.platform.http.RequestContext;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;
import java.util.Map;

/**
 * Created by Administrator on 2017/6/28 0028.
 * 测试链接;
 */
public class TestConnectionDemo{
    public static void main(String[] args) {
        RequestContext requestContext=new RequestContext();
//1、创建请求上下文;请求上下文就是写你需要知道的东西,类似考卷;而与之对应的是response,就是响应,回答,针对你的问题,给出你的回答;(这两个单词容易看混,别看错了)
        try{
//1.1根据mobileNumber来得到userid和domain;//注意这里有两个不规范的地方,即,没有驼峰命名法和匈牙利命名法;
            String mobileNumber="abc@google.com.cn";//这里是账号信息;
            String str[]=mobileNumber.split("@");
            String userid=str[0];//abc
            String domain=str[1];//google.com.cn
//2、建立连接,准备好接受响应(答案)的容器,一个名为response的实体;
//2.1这里使用Jsoup来建立连接,Jsoup是一个简单方便的解析器;需要传入登录地址;
//2.2需要data()方法添加访问的用户名,密码,登录方式,返回地址,版本信息,域名,验证码等
//2.3执行方法method()方法,是GET,POST,PUT,DELETE,PATCH,HEADER,OPTION,TRACE中的哪种方法;
//2.4执行execute()方法;
Connection.Response response= Jsoup.connect(OtherSystemBingdingUrl.LOGIN_URL)
                    .data("password","123456")
                    .data("validateCode","")
                    .data("returnurl","http://google.login.login.do")
                    .data("loginType","WEB")
                    .data("version","version")
                    .data("passwordType","0")
                    .data("mobileNumber",mobileNumber)
                    .data("userid",str[0])
                    .data("domain",str[1])
                    .method(Connection.Method.POST)
                    .execute();
//3、添加cookies注意,cookies是Map格式的键值对,response拿到cookies;
            Map<String,String> cookies=response.cookies();
            System.out.println("cookies:"+cookies);

//4、从response拿到url地址,拿到需要的sid和r参数,这里要使用response下面url的getQuery方法:
String url = response.url().getQuery();//
System.out.println("URL:"+response.url());//URL:http:/abc@google.com.cn/m.do?sid=6Q18C7MRnQKz4Nt00001&r=46ad37852cc
            System.out.println("urlQuery:"+url);//sid=6Q18C7MRnQKz4Nt00001&r=46ad37852cc

            String url2[]=url.split("&");
            requestContext.globalData("sid",url2[0]);////sid=6Q18C7MRnQKz4Nt00001
            requestContext.globalData("r",url2[1]);//r=46ad37852cc
            System.out.println(url2[0]);
            System.out.println(url2[1]);
        }catch (IOException e){
            throw new HttpConnectException(e.getCause());
        }
    }
}

这里,Connection有好多方法,以下是源码中的方法;

Connection url(URL var1);
    Connection url(String var1);//获取url(String)

    Connection proxy(Proxy var1);//代理服务器,即Proxy服务器,在互联网上的完成跑腿服务。当你在浏览器中设置了某个Proxy服务器之后,由你的浏览器所发出的任何要求,都会被送到Proxy服务器上去,由这台Proxy服务器代为处理。

    Connection proxy(String var1, int var2);

    Connection userAgent(String var1);//用户代理

    Connection timeout(int var1);//设置超时时间上限

    Connection maxBodySize(int var1);//最大Body大小;

    Connection referrer(String var1);//引荐

    Connection followRedirects(boolean var1);//跟随重定向

    Connection method(Connection.Method var1);参数传递方法(GET,POST,PUT,DELETE,PATCH打补丁
,HEAD,OPTION,TRACE等)

    Connection ignoreHttpErrors(boolean var1);//忽略Http错误(Boolean)

    Connection ignoreContentType(boolean var1);//忽略内容

    Connection validateTLSCertificates(boolean var1);//验证TLS证书

    Connection data(String var1, String var2);//data数据

    Connection data(String var1, String var2, InputStream var3);

    Connection data(Collection<Connection.KeyVal> var1);

    Connection data(Map<String, String> var1);

    Connection data(String... var1);

    Connection.KeyVal data(String var1);//key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。

    Connection requestBody(String var1);//请求体

    Connection header(String var1, String var2);//header头部,页眉;

    Connection headers(Map<String, String> var1);

    Connection cookie(String var1, String var2);//cookie,Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密),俗称,本地用户身份信息缓存;

    Connection cookies(Map<String, String> var1);

    Connection parser(Parser var1);//解析器

    Connection postDataCharset(String var1);//请求数据字符集,tips:Jsoup只能以默认编码方式(UTF-8)提交参数

    Document get() throws IOException;//页面文档获取,获取页面的信息,以Document形式获取;

    Document post() throws IOException;//发送文档信息;

    Connection.Response execute() throws IOException;//响应执行。添加完参数后,让其开始连接;

    Connection.Request request();

    Connection request(Connection.Request var1);

    Connection.Response response();

    Connection response(Connection.Response var1);

这里还枚举了Connection中的一些Method:

    public static enum Method {
        GET(false),
        POST(true),
        PUT(true),
        DELETE(false),
        PATCH(true),
        HEAD(false),
        OPTIONS(false),
        TRACE(false);

        private final boolean hasBody;

        private Method(boolean hasBody) {
            this.hasBody = hasBody;
        }

        public final boolean hasBody() {
            return this.hasBody;
        }
    }

3.截图:

4.总结:

这里面的参数,网址是编的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值