/** * Copyright 2017 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onap.workflow.activitiext.restservicetask; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.alibaba.fastjson.JSON; /** * This static-class eases HTTP-method execution by self-managed fault-handling * and automated Response-information processing */ public class LowLevelRestApi { private static final Logger logger = LoggerFactory.getLogger(LowLevelRestApi.class); // Local HttpClient used for every communication (Singleton implementation) private static HttpClient httpClient = new HttpClient(); /** * Executes a passed HttpMethod (Method type is either PUT, POST, GET or * DELETE) and returns a HttpResponseMessage * * @param method * Method to execute * @return HttpResponseMessage which contains all information about the * execution */ public static HttpResponseMessage executeHttpMethod(HttpMethod method) throws Exception { HttpResponseMessage responseMessage = null; try { // Execute Request LowLevelRestApi.httpClient.executeMethod(method); responseMessage = LowLevelRestApi.extractResponseInformation(method); logger.info("statusCode: {}", method.getStatusCode()); logger.info("responseBody: {}", method.getResponseBodyAsString()); } catch (Exception e) { logger.error("visit interface failed!", e); throw e; } finally { // Release Connection anyway method.releaseConnection(); } // Extract response information and return return responseMessage; } /** * Extracts the response information from an executed HttpMethod * * @param method * Executed Method * @return Packaged response information */ private static HttpResponseMessage extractResponseInformation(HttpMethod method) { // Create and return HttpResponseMethod HttpResponseMessage responseMessage = new HttpResponseMessage(); responseMessage.setStatusCode(method.getStatusCode()); try { JSON json = (JSON) JSON.parse(method.getResponseBodyAsString()); responseMessage.setResponseBody(json); json.toJSONString(); } catch (Exception e) { logger.info("response is not a json!"); } return responseMessage; } }