Connection模拟页面查询数据-中文参数不能查询

Connection con=Jsoup.connect(url).timeout(30000).ignoreContentType(true);
con.data("pageNo", String.valueOf(i));
         con.data("pageCount", String.valueOf(pageCount));
         con.data("pageSize", String.valueOf(PAGE_SIZE));
         con.data("prodTypeCodeOne", prodTypeCodeOne);
         con.data("prodTypeCodeTwo", prodTypeCodeTwo);
         con.data("prodTypeCodeThree", prodTypeCodeThree);
         con.data("prodTypeCodeFour", prodTypeCodeFour);
         con.data("prodTermsShow.prodTypeCode", showProdTypeCode);
         con.header("Content-Type","application/x-www-form-urlencoded");
         con.header("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
         con.header("Accept-Encoding","gzip, deflate");
con.header("Accept-Language","zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
con.header("Cache-Control","max-age=0");
con.header("Cache-Control","max-age=0");
con.header("Connection","keep-alive");
con.header("Upgrade-Insecure-Requests","1");
con.postDataCharset("gb2312");
         if(Func.isNotBlank(productName)){
   con.data("prodTermsShow.prodName", productName);
}
if(Func.isNotBlank(companyName)){
   con.data("prodTermsShow.insComName",companyName);
}
         Document document = con.post();
         pageCount =Integer.parseInt(document.getElementsByTag("form").get(0).getElementsByAttributeValue("name", "pageCount").val());
         Elements trElements = document.getElementsByClass("common1");

模拟网页发送请求 

prodTermsShow.prodName,prodTermsShow.insComName

这两个参数是 

productName);URLEncoder.encode(productName,"gb2313");

编码以后

根据他传的参数, %B8%BB%B5%C2%C9%FA%C3%FC%B8%BD%BC%D3%BF%B5%D4%C3%C8%CB  用gb2312可以反推出“富德生命附加康悦人”

证明这个字段就是用gb2312编码的,这里不用给字符串编码,设置发送请求就好了;

con.postDataCharset("gb2312");
### 回答1: 我可以为你提供一些参考代码,但具体的实现需要根据你的项目实际情况来考虑。下面是一段可能有用的Java代码: ``` //登录若依系统 String username = "username"; String password = "password";//建立URL连接 URL url = new URL("http://www.example.com/login"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true);//发送登录信息 String urlParameters = "username=" + username + "&password=" + password; DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close();//从系统页面获取数据 InputStream is = connection.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; StringBuffer response = new StringBuffer(); while((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close();//将获取到的数据写入数据库 String dbUrl = "jdbc:mysql://localhost:3306/mydb"; String dbUser = "root"; String dbPass = "password";Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPass); Statement stmt = con.createStatement(); String query = "INSERT INTO mytable VALUES ('" + response.toString() + "')"; stmt.executeUpdate(query); con.close(); ``` ### 回答2: 在Java中使用Cookie和HttpURLConnection可以模拟登录若依系统并获取页面数据并写入数据库。 1. 首先需要获取登录页面的cookie,可以使用HttpURLConnection发送GET请求获取登录页面,并读取响应头中的Set-Cookie字段。 ``` URL loginUrl = new URL("http://your_login_page_url"); HttpURLConnection connection = (HttpURLConnection) loginUrl.openConnection(); connection.setRequestMethod("GET"); String cookie = connection.getHeaderField("Set-Cookie"); ``` 2. 构建登录请求的参数,通常包括用户名和密码。若依系统登录的接口可能会有其他参数和加密方式,需要根据具体情况设置。 ``` String username = "your_username"; String password = "your_password"; String params = "username=" + URLEncoder.encode(username, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8"); ``` 3. 发送登录请求,使用Cookie和HttpURLConnection的POST请求发送参数,并将Cookie添加到请求头中。 ``` URL loginUrl = new URL("http://your_login_api_url"); HttpURLConnection connection = (HttpURLConnection) loginUrl.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Cookie", cookie); connection.setDoOutput(true); connection.getOutputStream().write(params.getBytes("UTF-8")); String sessionId = connection.getHeaderField("Set-Cookie").split(";")[0]; ``` 4. 登录成功后,可以使用HttpURLConnection发送GET请求获取需要的数据页面,并解析数据。 ``` URL dataUrl = new URL("http://your_data_page_url"); HttpURLConnection connection = (HttpURLConnection) dataUrl.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Cookie", sessionId); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; StringBuilder data = new StringBuilder(); while ((line = reader.readLine()) != null) { data.append(line); } reader.close(); // 解析data数据,可以使用正则表达式、Jsoup等方法获取需要的数据。 ``` 5. 将获取的数据写入数据库,可以使用JDBC连接数据库,并执行插入操作。 ``` Connection conn = DriverManager.getConnection("jdbc:mysql://your_mysql_address:your_mysql_port/your_database_name", "your_username", "your_password"); Statement statement = conn.createStatement(); String sql = "INSERT INTO your_table_name (column1, column2, ...) VALUES (value1, value2, ...)"; statement.executeUpdate(sql); statement.close(); conn.close(); ``` 以上是一个基本的流程,具体的实现可能会因为若依系统的特殊性而有所不同。根据具体情况,需要调整请求和解析的方式,以适应不同的系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值