HttpClient请求范文示例,及注意点提示
1、需求:A項(xiàng)目同步B項(xiàng)目數(shù)據(jù)表中符合A項(xiàng)目的數(shù)據(jù),并添加到A項(xiàng)目自己的表中
2、分析:根據(jù)此需求,可以得到的信息很明顯
① 查詢符合A條件的B項(xiàng)目表數(shù)據(jù)
② 將符合條件的數(shù)據(jù),同步添加到A項(xiàng)目表中
3、確定HttpClient工具的doPost/doGet,請(qǐng)求頭是以什么方式進(jìn)行傳遞,比如HttpClient中是這樣的:
public static String doPost(String url, String json) {String body = null;HttpEntity entity1 = null;@SuppressWarnings("resource")HttpClient httpClient = new DefaultHttpClient();try {HttpPost post = new HttpPost(url);StringEntity entity = new StringEntity(json, "UTF-8");post.setEntity(entity);post.setHeader("Content-Type", "application/json;charset=utf-8");// logger.info("post:" + post);org.apache.http.HttpResponse httpresponse = httpClient.execute(post);entity1 = httpresponse.getEntity();body = EntityUtils.toString(entity1, "UTF-8");// System.out.println(body);} catch (Exception ex) {ex.printStackTrace();return "exception";} finally {try {EntityUtils.consume(entity1);} catch (IOException e) {}httpClient.getConnectionManager().shutdown();}return body; }4、由上示例,請(qǐng)求參數(shù)要求是json類型的參數(shù),那么就不能以普通參數(shù)來(lái)進(jìn)行傳遞及進(jìn)行接收
5、postman模擬json參數(shù)請(qǐng)求該接口,通過(guò)debug調(diào)試或打印查看是否可以拿到值
6、B項(xiàng)目代碼部分(接收方)
代碼附上:
/*** 需求:接口返回渠道所有景點(diǎn)數(shù)據(jù)* @param sceid 景區(qū)id,傳null,默認(rèn)查詢所有*/ @ResponseBody @RequestMapping(value = "queryAllAgentData",method = RequestMethod.POST) public Object queryAllAgentData(@RequestBody String sceid){net.sf.json.JSONObject jt = net.sf.json.JSONObject.fromObject(sceid);Integer cid = jt.getInt("sceid");List<Agent> agents = null;try{agents = agentService.queryAllAgentData(cid);}catch (Exception e){e.printStackTrace();return renderStatusMsg(false, "500", "異常", null);}com.alibaba.fastjson.JSONObject wsResult = new JSONObject();wsResult.put("agents",agents);return wsResult; }7、A項(xiàng)目代碼部分(請(qǐng)求方)
代碼附上有點(diǎn)長(zhǎng),使用的定時(shí)器:
public class TicketAgentController implements Runnable {// 渠道景點(diǎn)AgentService agentService;private final static Logger logger = LoggerFactory.getLogger(TicketAgentController.class);/*** 需求:定時(shí)啟動(dòng)http請(qǐng)求獲取票務(wù)agent表數(shù)據(jù),并同步到仰韶agent表中*/public void queryAllAgentData(Integer sceid, String interfaceUrl) {JSONObject jt = new JSONObject();jt.put("sceid",sceid);String cid = jt.toString();// 請(qǐng)求接口獲取數(shù)據(jù)String result = HttpClientUtil.doPost(interfaceUrl, cid);// 將json字符串轉(zhuǎn)成json對(duì)象JSONObject jsonObject = JSONObject.fromObject(result);String agents = jsonObject.getString("agents");JSONArray dataArray = JSONArray.parseArray(agents);Agent agent = new Agent();// 客流數(shù)據(jù)條數(shù)Integer count = agentService.selectAgentCount();// 票務(wù)數(shù)據(jù)條數(shù)int size = dataArray.size();// 若不相同則更新if (count != size) {// 清空表后在同步agentService.updateAgents();logger.error("開始刪除當(dāng)日數(shù)據(jù),編號(hào)為"+sceid+"的景區(qū)TicketAgent刪除成功~");for (int i = 0; i < dataArray.size(); i++) {com.alibaba.fastjson.JSONObject dataObject = dataArray.getJSONObject(i);// 渠道idInteger agentId = dataObject.getInteger("agentId");// 機(jī)構(gòu)賬號(hào)String account = dataObject.getString("account");String passwd = dataObject.getString("passwd");// 景區(qū)編號(hào)Integer sid = dataObject.getInteger("sceid");String agentname = dataObject.getString("agentname");// 法人String owner = dataObject.getString("owner");// 聯(lián)系方式String tele = dataObject.getString("tele");Long register = dataObject.getLong("register");// 時(shí)間Date date = new Date(register);// 所在地String addressid = dataObject.getString("addressid");// 狀態(tài)String state = dataObject.getString("state");// 賬期String deadline = dataObject.getString("deadline");// 機(jī)構(gòu)類型String type = dataObject.getString("type");// ota標(biāo)示 0代表旅行社 1代表OTA 2代表售票員String otaFlag = dataObject.getString("otaFlag");String paramModel = dataObject.getString("paramModel");// 所屬景區(qū)Integer scenicspotId = dataObject.getInteger("scenicspotId");// 方法地址String noticepath = dataObject.getString("noticepath");// 價(jià)格日歷 0 禁用 1 啟用String pricecalendarFlag = dataObject.getString("pricecalendarFlag");agent.setAgentId(agentId);agent.setAccount(account);agent.setPasswd(passwd);agent.setSceid(sid);agent.setAgentname(agentname);agent.setOwner(owner);agent.setAddressid(addressid);agent.setTele(tele);agent.setRegister(date);agent.setState(state);agent.setDeadline(deadline);agent.setType(type);agent.setOtaFlag(otaFlag);agent.setParamModel(paramModel);agent.setScenicspotId(scenicspotId);agent.setNoticepath(noticepath);agent.setPricecalendarFlag(pricecalendarFlag);agentService.insertSelective(agent);}}}@Overridepublic void run() {InterfaceAddressService interfaceAddressService = SpringContextUtil.getBean(InterfaceAddressService.class);AccountTypeService accountTypeService = SpringContextUtil.getBean(AccountTypeService.class);// 使用定時(shí)器,@Autowired 無(wú)法注入service對(duì)象,需要手動(dòng)注入agentService = SpringContextUtil.getBean(AgentService.class);// 查詢類型為6的URL地址String interfaceUrl = interfaceAddressService.selectInterfaceUrl(7, 6);// 請(qǐng)求發(fā)送,并將景區(qū)id和url地址傳過(guò)去queryAllAgentData(7, interfaceUrl);} }8、接下來(lái)將result結(jié)果轉(zhuǎn)成JSONObject對(duì)象(net.sf.json.JSONObject? jt = net.sf.json.JSONObject.fromObject(result)),拿到對(duì)應(yīng)的字段值然后插入A項(xiàng)目表中即可
總結(jié)
以上是生活随笔為你收集整理的HttpClient请求范文示例,及注意点提示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php仿果壳网,模仿,令我们更亲近
- 下一篇: 高新企业申报是什么?需要怎么申请?