| | |
| | | * @param respBodyClass 响应体类型 |
| | | * @return 返回的响应结果 |
| | | */ |
| | | public static String postXmlRequest(String url, String request) throws HttpRequestException { |
| | | return postXmlRequest(url, request, EMPTY_HEADERS); |
| | | } |
| | | |
| | | public static String postXmlRequest(String url, String request, Map<String, String> headers) throws HttpRequestException { |
| | | Assert.hasLength(url, "璇锋眰url涓嶈兘涓虹┖瀛楃涓层€?"); |
| | | Assert.notNull(request, "XML request must not be null"); |
| | | EntityEnclosingMethod httpMethod = new PostMethod(url); |
| | | |
| | | httpMethod.addRequestHeader(CONTENT_TYPE, TEXT_XML_UTF8); |
| | | setHeaderRequestId(httpMethod); |
| | | if (headers != null && headers != EMPTY_HEADERS) { |
| | | setReqHeaders(headers, httpMethod); |
| | | } |
| | | |
| | | try { |
| | | RequestEntity entity = new StringRequestEntity(request, TEXT_XML, StandardCharsets.UTF_8.name()); |
| | | httpMethod.setRequestEntity(entity); |
| | | |
| | | int resultCode = httpClient.executeMethod(httpMethod); |
| | | String contentType = httpMethod.getResponseHeader(CONTENT_TYPE) == null |
| | | ? null : httpMethod.getResponseHeader(CONTENT_TYPE).getValue(); |
| | | String charset = StandardCharsets.UTF_8.name(); |
| | | if (contentType != null && contentType.contains("charset=")) { |
| | | String[] parts = contentType.split("charset="); |
| | | if (parts.length > 1) { |
| | | charset = parts[1].split(";")[0].trim(); |
| | | } |
| | | } |
| | | |
| | | InputStream inputStream = httpMethod.getResponseBodyAsStream(); |
| | | if (inputStream == null) { |
| | | throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, "鍝嶅簲涓簄ull"); |
| | | } |
| | | BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charset)); |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | String str; |
| | | while ((str = reader.readLine()) != null) { |
| | | stringBuilder.append(str); |
| | | } |
| | | reader.close(); |
| | | String respXml = stringBuilder.toString(); |
| | | if (resultCode == OK) { |
| | | return respXml; |
| | | } else { |
| | | throw new HttpRequestException(resultCode, respXml); |
| | | } |
| | | } catch (UnsupportedEncodingException e) { |
| | | throw new HttpRequestException(ENCODING_ERROR_CODE, e); |
| | | } catch (HttpException e) { |
| | | throw new HttpRequestException(HTTP_ERROR_CODE, e); |
| | | } catch (IOException e) { |
| | | throw new HttpRequestException(IO_ERROR_CODE, e); |
| | | } finally { |
| | | if (httpMethod != null) { |
| | | httpMethod.releaseConnection(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public static <RESPBODY> HttpEntity<RESPBODY> postJsonRequestV2(String url, HttpEntity<?> reqEntity, Class<RESPBODY> respBodyClass) { |
| | | Assert.hasLength(url, "请求url不能为空字符串。"); |