电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java 實現通過 post 方式提交json參數操作

瀏覽:43日期:2022-08-24 18:18:19

由于所爬取的網站需要驗證碼,通過網頁的開發人員工具【F12】及在線http post,get接口測試請求工具(http://coolaf.com/)發現訪問時加上請求頭header 信息時可以跳過驗證碼校驗。

而且該網站只接受post請求,對提交的參數也只接受json格式,否則請求失敗。

現將通過 post 方式提交json參數的方法記錄如下:

import java.io.UnsupportedEncodingException;import java.net.URI;import java.net.URLDecoder;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpRequestBase;import org.apache.http.client.utils.URIBuilder;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;/** * <p>@PostJsonParamsTest.java</p> * @version 1.0 * @author zxk * @Date 2018-3-3 */public class PostJsonParamsTest { // 超時時間 private static final int RUN_TIME =10000; // 爬取初始頁數 private String page; public static void main(String[] args) throws Exception { PostJsonParamsTest crawl = new PostJsonParamsTest(); // 請求的url地址 String url ='http://www.gzcredit.gov.cn/Service/CreditService.asmx/searchOrgWithPage'; // 設置起始訪問頁碼 crawl.setPage('1'); String isStop = ''; // 設置請求 HttpRequestBase request = null; request = new HttpPost(url); try { // 設置config RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(RUN_TIME) .setConnectTimeout(RUN_TIME) .setConnectionRequestTimeout(RUN_TIME) .build(); request.setConfig(requestConfig); // json 格式的 post 參數 String postParams ='{'condition':{'qymc':'%%%%','cydw':''},'pageNo':'+crawl.getPage()+','pageSize':100,count:2709846}'; System.out.println(postParams); HttpEntity httpEntity = new StringEntity(postParams); ((HttpPost) request).setEntity(httpEntity); // 添加請求頭,可以繞過驗證碼 request.addHeader('Accept','application/json, text/javascript, */*'); request.addHeader('Accept-Encoding','gzip, deflate'); request.addHeader('Accept-Language', 'zh-CN,zh;q=0.8'); request.addHeader('Connection', 'keep-alive'); request.addHeader('Host', 'www.gzcredit.gov.cn'); request.addHeader('Content-Type', 'application/json; charset=UTF-8'); URIBuilder builder = new URIBuilder(url); URI uri = builder.build(); uri = new URI(URLDecoder.decode(uri.toString(), 'UTF-8')); request.setURI(uri); while(!isStop.equals('停止')||isStop.equals('重跑')){isStop = crawl.crawlList(request);if(isStop.equals('爬取')){ crawl.setPage(String.valueOf(Integer.parseInt(crawl.getPage())+1));}// if('2713'.equals(crawl.getPage())) break;if('2'.equals(crawl.getPage())){ break;} } } catch (NumberFormatException e) { e.printStackTrace(); throw new NumberFormatException('數字格式錯誤'); } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new UnsupportedEncodingException('不支持的編碼集'); } } /** * 爬取搜索列表 * @param page * @return */ private String crawlList(HttpRequestBase request){ int statusCode = 0; // 下面兩種方式都可以用來創建客戶端連接,相當于打開了一個瀏覽器 CloseableHttpClient httpClient = HttpClients.createDefault(); // HttpClient httpClient = HttpClientBuilder.create().build(); HttpEntity httpEntity = null; HttpResponse response = null; try { try {response = httpClient.execute(request); } catch (Exception e){e.printStackTrace();EntityUtils.consumeQuietly(httpEntity);return '重跑'; } //打印狀態 statusCode =response.getStatusLine().getStatusCode(); if(statusCode!=200){EntityUtils.consumeQuietly(httpEntity);return '重跑'; } //實體 httpEntity = response.getEntity(); String searchListStr = EntityUtils.toString(httpEntity,'GBK').replaceAll('米', '米'); String allData = (String) JSONObject.parseObject(searchListStr).get('d'); // 字符串值中間含雙引號的替換處理 String s = allData.replaceAll('{'','{’') .replaceAll('':'', '’:’') .replaceAll('','', '’,’') .replaceAll('':', '’:') .replaceAll(','', ',’') .replaceAll(''}', '’}') .replaceAll(''', '') .replaceAll('’', ''') .replaceAll('<br />', '') .replaceAll('t', '') .replaceAll('', '?'); JSONObject jsonData = JSONObject.parseObject(s); JSONArray jsonContent = jsonData.getJSONArray('orgList'); searchListStr = null; allData = null; s = null; if (jsonContent==null || jsonContent.size()<1) {return '重跑'; } System.out.println(jsonContent.toJSONString()); return '爬取'; } catch (Exception e) { e.printStackTrace(); return '重跑'; } finally{ EntityUtils.consumeQuietly(httpEntity); } } private String getPage() { return page; } private void setPage(String page) { this.page = page; }}

補充知識:JAVA利用HttpClient發送post請求,將請求數據放到body里

我就廢話不多說了,大家還是直接看代碼吧~

/** * post請求 ,請求數據放到body里 * @param url 請求地址 * @param bodyData 參數 * @author wangyj * @date 2019年4月20日 */ public static String doPostBodyData(String url, String bodyData) throws Exception{ String result = ''; CloseableHttpClient httpClient = null; CloseableHttpResponse response = null; try { HttpPost httpPost = getHttpPost(url, null); // 請求地址 httpPost.setEntity(new StringEntity(bodyData, Encoding)); httpClient = getHttpClient(); // 得到返回的response response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); result = getResult(entity, Encoding); } catch (Exception e) { throw e; } finally { // 關閉httpClient if (null != httpClient) {httpClient.close(); } // 關閉response if (null != response) {EntityUtils.consume(response.getEntity()); // 會自動釋放連接response.close(); } } return result; }

以上這篇java 實現通過 post 方式提交json參數操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 英超直播_英超免费在线高清直播_英超视频在线观看无插件-24直播网 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 郑州律师咨询-郑州律师事务所_河南锦盾律师事务所 | 诗词大全-古诗名句 - 古诗词赏析 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 水轮机密封网 | 水轮机密封产品研发生产厂家| 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 | 无线对讲-无线对讲系统解决方案-重庆畅博通信 | 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 万烁建筑设计院-建筑设计公司加盟,设计院加盟分公司,市政设计加盟 | 釜溪印象网络 - Powered by Discuz!| 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | 市政路灯_厂家-淄博信达电力科技有限公司 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 |