1. 将 pojo 转换成json ,使用 HttpClient 发送请求java
1. 1 在 OrderServiceImpl 中json
@Override public String createOrder(Order order) { //调用建立订单服务以前补全用户信息。 //从cookie中后取TT_TOKEN的内容,根据token调用sso系统的服务根据token换取用户信息。 //调用taotao-order的服务提交订单。 String json = HttpClientUtil.doPostJson(ORDER_BASE_URL + ORDER_CREATE_URL, JsonUtils.objectToJson(order)); //把json转换成taotaoResult TaotaoResult taotaoResult = TaotaoResult.format(json); if (taotaoResult.getStatus() == 200) { Object orderId = taotaoResult.getData(); return orderId.toString(); } return ""; }
1.2 在 HttpClientUtil 中cookie
public static String doPostJson(String url, String json) { // 建立Httpclient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 建立Http Post请求 HttpPost httpPost = new HttpPost(url); // 建立请求内容 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); httpPost.setEntity(entity); // 执行http请求 response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return resultString; }
2。 将全部参数添加在Map<String,String>中,使用HttpClient发送请求app
根据参数查询分页ide
@Override public SearchResult search(String queryString, int page) { // 调用taotao-search的服务 //查询参数 Map<String, String> param = new HashMap<>(); param.put("q", queryString); param.put("page", page + ""); try { //调用服务 String json = HttpClientUtil.doGet(SEARCH_BASE_URL, param); //把字符串转换成java对象 TaotaoResult taotaoResult = TaotaoResult.formatToPojo(json, SearchResult.class); if (taotaoResult.getStatus() == 200) { SearchResult result = (SearchResult) taotaoResult.getData(); return result; } } catch (Exception e) { e.printStackTrace(); } return null; }
HttpClientUtil 中ui
public static String doGet(String url, Map<String, String> param) { // 建立Httpclient对象 CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; CloseableHttpResponse response = null; try { // 建立uri URIBuilder builder = new URIBuilder(url); if (param != null) { for (String key : param.keySet()) { builder.addParameter(key, param.get(key)); } } URI uri = builder.build(); // 建立http GET请求 HttpGet httpGet = new HttpGet(uri); // 执行请求 response = httpclient.execute(httpGet); // 判断返回状态是否为200 if (response.getStatusLine().getStatusCode() == 200) { resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; }
其中 SEARCH_BASE_URL 配置在 resource.properties中url
SEARCH_BASE_URL=http://192.168.25.136:8081/search/query
/search/query 接口code
@RequestMapping(value="/query", method=RequestMethod.GET) @ResponseBody public TaotaoResult search(@RequestParam("q")String queryString, @RequestParam(defaultValue="1")Integer page, @RequestParam(defaultValue="60")Integer rows) { //查询条件不能为空 if (StringUtils.isBlank(queryString)) { return TaotaoResult.build(400, "查询条件不能为空"); } SearchResult searchResult = null; try { queryString = new String(queryString.getBytes("iso8859-1"), "utf-8"); searchResult = searchService.search(queryString, page, rows); } catch (Exception e) { e.printStackTrace(); return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e)); } return TaotaoResult.ok(searchResult); }
总结:发布的接口 中参数 是Integer类型,使用HttpCliet请求时 能够 使用 String 类型数据发送orm