json格式請求http
阿新 • • 發佈:2019-01-04
例子:JsonObject response = postJsonData(url, gson.toJson(applyInfo));//applyInfo 一個java物件
/** * 傳送 post 請求 * * @param url 地址 * @return {@link JsonObject} */ public static JsonObject postJsonData(String url, String jsonStrData) { HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); HttpPost post = new HttpPost(url); JsonObject jsonObject = null; try { CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); HttpEntity entity = new StringEntity(jsonStrData, "UTF-8"); post.setEntity(entity); post.setHeader("Content-type", "application/json"); HttpResponse resp = closeableHttpClient.execute(post); jsonObject = convertResponseBytes2JsonObj(resp); } catch (IOException e) { e.printStackTrace(); } return jsonObject; } /** * 傳送 get 請求 * * @param url 地址 * @return {@link JsonObject} */ public static JsonObject getJsonResponse(String url) { JsonObject jsonObject = new JsonObject(); HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); HttpGet get = new HttpGet(url); CloseableHttpClient closeableHttpClient = null; try { closeableHttpClient = httpClientBuilder.build(); HttpResponse resp = closeableHttpClient.execute(get); jsonObject = convertResponseBytes2JsonObj(resp); } catch (IOException e) { e.printStackTrace(); if (null != closeableHttpClient) { try { closeableHttpClient.close(); } catch (IOException e1) { e1.printStackTrace(); } } } return jsonObject; } /** * Header 為 application/json POST 請求資料 * * @param resp * @return {@link JsonObject} */ private static JsonObject convertResponseBytes2JsonObj(HttpResponse resp) { JsonObject jsonObject = null; try { InputStream respIs = resp.getEntity().getContent(); byte[] respBytes = IOUtils.toByteArray(respIs); String result = new String(respBytes, Charset.forName("UTF-8")); if (null == result || result.length() == 0) { LOG.error("請求無響應"); } else { if (result.startsWith("{") && result.endsWith("}")) { jsonObject = (JsonObject) jsonParser.parse(result); } else { LOG.error("請求不能轉成JSON物件"); } } } catch (Exception e) { e.printStackTrace(); } return jsonObject; }
附:
public static String post(String url, Map<String, String> params) { DefaultHttpClient httpclient = new DefaultHttpClient(); String body = null; log.info("create httppost:" + url); HttpPost post = postForm(url, params); body = invoke(httpclient, post); httpclient.getConnectionManager().shutdown(); return body; } public static String get(String url) { DefaultHttpClient httpclient = new DefaultHttpClient(); String body = null; log.info("create httppost:" + url); HttpGet get = new HttpGet(url); body = invoke(httpclient, get); httpclient.getConnectionManager().shutdown(); return body; } private static String invoke(DefaultHttpClient httpclient, HttpUriRequest httpost) { HttpResponse response = sendRequest(httpclient, httpost); String body = paseResponse(response); return body; } @SuppressWarnings("unused") private static String paseResponse(HttpResponse response) { HttpEntity entity = response.getEntity(); log.info("response status: " + response.getStatusLine()); String charset = EntityUtils.getContentCharSet(entity); String body = null; try { body = EntityUtils.toString(entity); log.info(body); } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return body; } private static HttpResponse sendRequest(DefaultHttpClient httpclient, HttpUriRequest httpost) { HttpResponse response = null; try { response = httpclient.execute(httpost); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return response; } private static HttpPost postForm(String url, Map<String, String> params) { HttpPost httpost = new HttpPost(url); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); Set<String> keySet = params.keySet(); for (String key : keySet) { nvps.add(new BasicNameValuePair(key, params.get(key))); } try { httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return httpost; }
get請求
String access_token = client.get(url);
post請求
String response = client.post(url, param);//Map<String, String> param