HttpClient请求范文示例,及注意点提示
生活随笔
收集整理的這篇文章主要介紹了
HttpClient请求范文示例,及注意点提示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、需求:A項目同步B項目數據表中符合A項目的數據,并添加到A項目自己的表中
2、分析:根據此需求,可以得到的信息很明顯
① 查詢符合A條件的B項目表數據
② 將符合條件的數據,同步添加到A項目表中
3、確定HttpClient工具的doPost/doGet,請求頭是以什么方式進行傳遞,比如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、由上示例,請求參數要求是json類型的參數,那么就不能以普通參數來進行傳遞及進行接收
5、postman模擬json參數請求該接口,通過debug調試或打印查看是否可以拿到值
6、B項目代碼部分(接收方)
代碼附上:
/*** 需求:接口返回渠道所有景點數據* @param sceid 景區id,傳null,默認查詢所有*/ @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項目代碼部分(請求方)
代碼附上有點長,使用的定時器:
public class TicketAgentController implements Runnable {// 渠道景點AgentService agentService;private final static Logger logger = LoggerFactory.getLogger(TicketAgentController.class);/*** 需求:定時啟動http請求獲取票務agent表數據,并同步到仰韶agent表中*/public void queryAllAgentData(Integer sceid, String interfaceUrl) {JSONObject jt = new JSONObject();jt.put("sceid",sceid);String cid = jt.toString();// 請求接口獲取數據String result = HttpClientUtil.doPost(interfaceUrl, cid);// 將json字符串轉成json對象JSONObject jsonObject = JSONObject.fromObject(result);String agents = jsonObject.getString("agents");JSONArray dataArray = JSONArray.parseArray(agents);Agent agent = new Agent();// 客流數據條數Integer count = agentService.selectAgentCount();// 票務數據條數int size = dataArray.size();// 若不相同則更新if (count != size) {// 清空表后在同步agentService.updateAgents();logger.error("開始刪除當日數據,編號為"+sceid+"的景區TicketAgent刪除成功~");for (int i = 0; i < dataArray.size(); i++) {com.alibaba.fastjson.JSONObject dataObject = dataArray.getJSONObject(i);// 渠道idInteger agentId = dataObject.getInteger("agentId");// 機構賬號String account = dataObject.getString("account");String passwd = dataObject.getString("passwd");// 景區編號Integer sid = dataObject.getInteger("sceid");String agentname = dataObject.getString("agentname");// 法人String owner = dataObject.getString("owner");// 聯系方式String tele = dataObject.getString("tele");Long register = dataObject.getLong("register");// 時間Date date = new Date(register);// 所在地String addressid = dataObject.getString("addressid");// 狀態String state = dataObject.getString("state");// 賬期String deadline = dataObject.getString("deadline");// 機構類型String type = dataObject.getString("type");// ota標示 0代表旅行社 1代表OTA 2代表售票員String otaFlag = dataObject.getString("otaFlag");String paramModel = dataObject.getString("paramModel");// 所屬景區Integer scenicspotId = dataObject.getInteger("scenicspotId");// 方法地址String noticepath = dataObject.getString("noticepath");// 價格日歷 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);// 使用定時器,@Autowired 無法注入service對象,需要手動注入agentService = SpringContextUtil.getBean(AgentService.class);// 查詢類型為6的URL地址String interfaceUrl = interfaceAddressService.selectInterfaceUrl(7, 6);// 請求發送,并將景區id和url地址傳過去queryAllAgentData(7, interfaceUrl);} }8、接下來將result結果轉成JSONObject對象(net.sf.json.JSONObject? jt = net.sf.json.JSONObject.fromObject(result)),拿到對應的字段值然后插入A項目表中即可
總結
以上是生活随笔為你收集整理的HttpClient请求范文示例,及注意点提示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php仿果壳网,模仿,令我们更亲近
- 下一篇: 高新企业申报是什么?需要怎么申请?