Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java?rev=1779815&r1=1779814&r2=1779815&view=diff ============================================================================== --- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java (original) +++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java Sun Jan 22 13:47:49 2017 @@ -19,28 +19,42 @@ package org.apache.axis2.transport.http.impl.httpclient4; import java.io.IOException; +import java.io.InputStream; +import java.net.URISyntaxException; import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.zip.GZIPInputStream; +import org.apache.axiom.mime.Header; import org.apache.axis2.AxisFault; import org.apache.axis2.context.MessageContext; -import org.apache.axis2.context.NamedValue; import org.apache.axis2.context.OperationContext; import org.apache.axis2.i18n.Messages; import org.apache.axis2.transport.http.AxisRequestEntity; +import org.apache.axis2.transport.http.HTTPAuthenticator; import org.apache.axis2.transport.http.HTTPConstants; +import org.apache.axis2.transport.http.HTTPTransportConstants; import org.apache.axis2.transport.http.Request; +import org.apache.axis2.util.Utils; import org.apache.axis2.wsdl.WSDLConstants; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.http.Header; import org.apache.http.HttpEntity; -import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpVersion; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.Credentials; +import org.apache.http.auth.NTCredentials; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.auth.params.AuthPNames; +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.client.params.AuthPolicy; import org.apache.http.client.params.ClientPNames; +import org.apache.http.impl.auth.NTLMSchemeFactory; import org.apache.http.impl.client.AbstractHttpClient; import org.apache.http.params.CoreProtocolPNames; import org.apache.http.params.HttpParams; @@ -56,22 +70,47 @@ final class RequestImpl implements Reque protected final URL url; protected final HttpRequestBase method; protected final AbstractHttpClient httpClient; + private final HttpHost httpHost; + private HttpResponse response; - RequestImpl(HTTPSenderImpl sender, MessageContext msgContext, URL url, AxisRequestEntity requestEntity, HttpRequestBase method) throws AxisFault { + RequestImpl(HTTPSenderImpl sender, MessageContext msgContext, final String methodName, URL url, + AxisRequestEntity requestEntity) throws AxisFault { this.sender = sender; this.msgContext = msgContext; this.url = url; - this.method = method; httpClient = sender.getHttpClient(msgContext); - sender.populateCommonProperties(msgContext, url, method, httpClient); - if (requestEntity != null) { - AxisRequestEntityImpl requestEntityAdapter = new AxisRequestEntityImpl(requestEntity); - ((HttpEntityEnclosingRequest)method).setEntity(requestEntityAdapter); - - if (!sender.getHttpVersion().equals(HTTPConstants.HEADER_PROTOCOL_10) && sender.isChunked()) { - requestEntity.setChunked(sender.isChunked()); + if (requestEntity == null) { + method = new HttpRequestBase() { + @Override + public String getMethod() { + return methodName; + } + }; + } else { + HttpEntityEnclosingRequestBase entityEnclosingRequest = new HttpEntityEnclosingRequestBase() { + @Override + public String getMethod() { + return methodName; + } + }; + entityEnclosingRequest.setEntity(new AxisRequestEntityImpl(requestEntity)); + method = entityEnclosingRequest; + } + try { + method.setURI(url.toURI()); + } catch (URISyntaxException ex) { + throw AxisFault.makeFault(ex); + } + int port = url.getPort(); + String protocol = url.getProtocol(); + if (port == -1) { + if (HTTPTransportConstants.PROTOCOL_HTTP.equals(protocol)) { + port = 80; + } else if (HTTPTransportConstants.PROTOCOL_HTTPS.equals(protocol)) { + port = 443; } } + httpHost = new HttpHost(url.getHost(), port, url.getProtocol()); } @Override @@ -90,32 +129,47 @@ final class RequestImpl implements Reque method.addHeader(name, value); } - @Override - public NamedValue[] getRequestHeaders() { - Header[] headers = method.getAllHeaders(); - NamedValue[] result = new NamedValue[headers.length]; + private static Header[] convertHeaders(org.apache.http.Header[] headers) { + Header[] result = new Header[headers.length]; for (int i=0; i<headers.length; i++) { - result[i] = new NamedValue(headers[i].getName(), headers[i].getValue()); + result[i] = new Header(headers[i].getName(), headers[i].getValue()); } return result; } @Override + public Header[] getRequestHeaders() { + return convertHeaders(method.getAllHeaders()); + } + + @Override + public int getStatusCode() { + return response.getStatusLine().getStatusCode(); + } + + @Override + public String getStatusText() { + return response.getStatusLine().getReasonPhrase(); + } + + @Override + public Header[] getResponseHeaders() { + return convertHeaders(response.getAllHeaders()); + } + + @Override public void execute() throws AxisFault { - HttpResponse response = null; try { - response = executeMethod(); - handleResponse(response); + executeMethod(); + handleResponse(); } catch (IOException e) { log.info("Unable to send to url[" + url + "]", e); throw AxisFault.makeFault(e); - } finally { - cleanup(response); } } - private HttpResponse executeMethod() throws IOException { - HttpHost httpHost = sender.getHostConfiguration(httpClient, msgContext, url); + private void executeMethod() throws IOException { + populateHostConfiguration(); // add compression headers if needed if (msgContext.isPropertyTrue(HTTPConstants.MC_ACCEPT_GZIP)) { @@ -123,11 +177,6 @@ final class RequestImpl implements Reque HTTPConstants.COMPRESSION_GZIP); } - if (msgContext.isPropertyTrue(HTTPConstants.MC_GZIP_REQUEST)) { - method.addHeader(HTTPConstants.HEADER_CONTENT_ENCODING, - HTTPConstants.COMPRESSION_GZIP); - } - if (msgContext.getProperty(HTTPConstants.HTTP_METHOD_PARAMS) != null) { HttpParams params = (HttpParams) msgContext .getProperty(HTTPConstants.HTTP_METHOD_PARAMS); @@ -142,73 +191,168 @@ final class RequestImpl implements Reque sender.setTimeouts(msgContext, method); HttpContext localContext = new BasicHttpContext(); // Why do we have add context here - return httpClient.execute(httpHost, method, localContext); + response = httpClient.execute(httpHost, method, localContext); } - private void handleResponse(HttpResponse response) - throws IOException { - int statusCode = response.getStatusLine().getStatusCode(); - log.trace("Handling response - " + statusCode); - if (statusCode == HttpStatus.SC_ACCEPTED) { - msgContext.setProperty(HTTPConstants.CLEANUP_RESPONSE, Boolean.TRUE); - /* - * When an HTTP 202 Accepted code has been received, this will be - * the case of an execution of an in-only operation. In such a - * scenario, the HTTP response headers should be returned, i.e. - * session cookies. - */ - sender.obtainHTTPHeaderInformation(response, msgContext); - - } else if (statusCode >= 200 && statusCode < 300) { - // We don't clean the response here because the response will be used afterwards - msgContext.setProperty(HTTPConstants.CLEANUP_RESPONSE, Boolean.FALSE); - sender.processResponse(response, msgContext); - - } else if (statusCode == HttpStatus.SC_INTERNAL_SERVER_ERROR - || statusCode == HttpStatus.SC_BAD_REQUEST) { - msgContext.setProperty(HTTPConstants.CLEANUP_RESPONSE, Boolean.TRUE); - Header contentTypeHeader = response.getFirstHeader(HTTPConstants.HEADER_CONTENT_TYPE); - String value = null; - if (contentTypeHeader != null) { - value = contentTypeHeader.getValue(); - } - OperationContext opContext = msgContext.getOperationContext(); - if (opContext != null) { - MessageContext inMessageContext = opContext - .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE); - if (inMessageContext != null) { - inMessageContext.setProcessingFault(true); + private void handleResponse() throws IOException { + boolean cleanup = true; + try { + int statusCode = getStatusCode(); + log.trace("Handling response - " + statusCode); + boolean processResponse; + boolean fault; + if (statusCode == HttpStatus.SC_ACCEPTED) { + processResponse = false; + fault = false; + } else if (statusCode >= 200 && statusCode < 300) { + processResponse = true; + fault = false; + } else if (statusCode == HttpStatus.SC_INTERNAL_SERVER_ERROR + || statusCode == HttpStatus.SC_BAD_REQUEST) { + processResponse = true; + fault = true; + } else { + throw new AxisFault(Messages.getMessage("transportError", String.valueOf(statusCode), + getStatusText())); + } + sender.obtainHTTPHeaderInformation(this, response, msgContext); + if (processResponse) { + OperationContext opContext = msgContext.getOperationContext(); + MessageContext inMessageContext = opContext == null ? null + : opContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE); + if (opContext != null) { + HttpEntity httpEntity = response.getEntity(); + if (httpEntity != null) { + InputStream in = httpEntity.getContent(); + org.apache.http.Header contentEncoding = httpEntity.getContentEncoding(); + if (contentEncoding != null) { + if (contentEncoding.getValue().equalsIgnoreCase(HTTPConstants.COMPRESSION_GZIP)) { + in = new GZIPInputStream(in); + // If the content-encoding is identity we can basically ignore + // it. + } else if (!"identity".equalsIgnoreCase(contentEncoding.getValue())) { + throw new AxisFault("HTTP :" + "unsupported content-encoding of '" + + contentEncoding.getValue() + "' found"); + } + } + opContext.setProperty(MessageContext.TRANSPORT_IN, in); + cleanup = false; + } + } + if (fault) { + if (inMessageContext != null) { + inMessageContext.setProcessingFault(true); + } + if (Utils.isClientThreadNonBlockingPropertySet(msgContext)) { + throw new AxisFault(Messages. + getMessage("transportError", + String.valueOf(statusCode), + getStatusText())); + } } } - if (value != null) { - msgContext.setProperty(HTTPConstants.CLEANUP_RESPONSE, Boolean.FALSE); - sender.processResponse(response, msgContext); + } finally { + if (cleanup) { + cleanup(response); } + } - if (org.apache.axis2.util.Utils.isClientThreadNonBlockingPropertySet(msgContext)) { - throw new AxisFault(Messages. - getMessage("transportError", - String.valueOf(statusCode), - response.getStatusLine().toString())); + } + + private void cleanup(HttpResponse response) { + log.trace("Cleaning response : " + response); + HttpEntity entity = response.getEntity(); + if (entity != null) { + try { + EntityUtils.consume(entity); + } catch (IOException e) { + log.error("Error while cleaning response : " + response, e); } - } else { - msgContext.setProperty(HTTPConstants.CLEANUP_RESPONSE, Boolean.TRUE); - throw new AxisFault(Messages.getMessage("transportError", String.valueOf(statusCode), - response.getStatusLine().toString())); } } - private void cleanup(HttpResponse response) { - if (msgContext.isPropertyTrue(HTTPConstants.CLEANUP_RESPONSE)) { - log.trace("Cleaning response : " + response); - HttpEntity entity = response.getEntity(); - if (entity != null) { - try { - EntityUtils.consume(entity); - } catch (IOException e) { - log.error("Error while cleaning response : " + response, e); + /** + * getting host configuration to support standard http/s, proxy and NTLM + * support + * + * @return a HostConfiguration set up with proxy information + * @throws org.apache.axis2.AxisFault if problems occur + */ + private void populateHostConfiguration() throws AxisFault { + // proxy configuration + + if (HTTPProxyConfigurator.isProxyEnabled(msgContext, url)) { + if (log.isDebugEnabled()) { + log.debug("Configuring HTTP proxy."); + } + HTTPProxyConfigurator.configure(msgContext, httpClient); + } + } + + /* + * This will handle server Authentication, It could be either NTLM, Digest + * or Basic Authentication. Apart from that user can change the priory or + * add a custom authentication scheme. + */ + @Override + public void enableAuthentication(HTTPAuthenticator authenticator) { + method.getParams().setBooleanParameter(ClientPNames.HANDLE_AUTHENTICATION, true); + + String username = authenticator.getUsername(); + String password = authenticator.getPassword(); + String host = authenticator.getHost(); + String domain = authenticator.getDomain(); + + int port = authenticator.getPort(); + String realm = authenticator.getRealm(); + + Credentials creds; + + // TODO : Set preemptive authentication, but its not recommended in HC 4 + + if (host != null) { + if (domain != null) { + /* Credentials for NTLM Authentication */ + httpClient.getAuthSchemes().register("ntlm",new NTLMSchemeFactory()); + creds = new NTCredentials(username, password, host, domain); + } else { + /* Credentials for Digest and Basic Authentication */ + creds = new UsernamePasswordCredentials(username, password); + } + httpClient.getCredentialsProvider(). + setCredentials(new AuthScope(host, port, realm), creds); + } else { + if (domain != null) { + /* + * Credentials for NTLM Authentication when host is + * ANY_HOST + */ + httpClient.getAuthSchemes().register("ntlm",new NTLMSchemeFactory()); + creds = new NTCredentials(username, password, AuthScope.ANY_HOST, domain); + httpClient.getCredentialsProvider(). + setCredentials(new AuthScope(AuthScope.ANY_HOST, port, realm), + creds); + } else { + /* Credentials only for Digest and Basic Authentication */ + creds = new UsernamePasswordCredentials(username, password); + httpClient.getCredentialsProvider(). + setCredentials(new AuthScope(AuthScope.ANY), creds); + } + } + /* Customizing the priority Order */ + List schemes = authenticator.getAuthSchemes(); + if (schemes != null && schemes.size() > 0) { + List authPrefs = new ArrayList(3); + for (int i = 0; i < schemes.size(); i++) { + if (schemes.get(i) instanceof AuthPolicy) { + authPrefs.add(schemes.get(i)); + continue; } + String scheme = (String) schemes.get(i); + authPrefs.add(authenticator.getAuthPolicyPref(scheme)); + } + httpClient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF, authPrefs); } } }
Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4SenderTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4SenderTest.java?rev=1779815&r1=1779814&r2=1779815&view=diff ============================================================================== --- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4SenderTest.java (original) +++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPClient4SenderTest.java Sun Jan 22 13:47:49 2017 @@ -19,159 +19,12 @@ package org.apache.axis2.transport.http; -import org.apache.axis2.Constants; import org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl; -import static com.google.common.truth.Truth.assertAbout; -import static org.apache.axiom.truth.xml.XMLTruth.xml; - -import javax.ws.rs.core.HttpHeaders; - public class HTTPClient4SenderTest extends HTTPSenderTest { @Override protected HTTPSender getHTTPSender() { return new HTTPSenderImpl(); } - - @Override - public void testSendViaGet() throws Exception { - int port = getBasicHttpServer().getPort(); - sendViaHTTP(Constants.Configuration.HTTP_METHOD_GET, "urn:getService", "http://localhost:" - + port + "/getService", true); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_GET, - getHTTPMethod()); - assertEquals("Not the expected content", "/getService?part=sample%20data", - getStringContent()); - assertNull("Not the expected HTTP Header value", getHeaders().get("SOAPAction")); - assertEquals("Not the expected HTTP Header value", - "application/x-www-form-urlencoded;action=\"urn:getService\";", - getHeaders().get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - } - - @Override - public void testSendViaPost() throws Exception { - // test with REST payload - int port = getBasicHttpServer().getPort(); - sendViaHTTP(Constants.Configuration.HTTP_METHOD_POST, "urn:postService", - "http://localhost:" + port + "/postService", true); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_POST, - getHTTPMethod()); - assertEquals("Not the expected content", getEnvelope().getFirstElement().getFirstElement() - .toString(), getStringContent()); - assertNull("Not the expected HTTP Header value", getHeaders().get("SOAPAction")); - assertEquals("Not the expected HTTP Header value", "application/xml", - getHeaders().get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - - // test with SOAP payload. - sendViaHTTP(Constants.Configuration.HTTP_METHOD_POST, "urn:postService", - "http://localhost:" + port + "/postService", false); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_POST, - getHTTPMethod()); - assertAbout(xml()).that(getStringContent()).hasSameContentAs(getEnvelope().toString()); - assertEquals("Not the expected HTTP Header value", "urn:postService", - getHeaders().get("SOAPAction").replace("\"", "")); - assertEquals("Not the expected HTTP Header value", "text/xml", - getHeaders().get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - } - - @Override - public void testSendViaPut() throws Exception { - // test with REST payload - int port = getBasicHttpServer().getPort(); - sendViaHTTP(Constants.Configuration.HTTP_METHOD_PUT, "urn:putService", "http://localhost:" - + port + "/putService", true); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_PUT, - getHTTPMethod()); - assertEquals("Not the expected content", getEnvelope().getFirstElement().getFirstElement() - .toString(), getStringContent()); - assertNull("Not the expected HTTP Header value", getHeaders().get("SOAPAction")); - assertEquals("Not the expected HTTP Header value", "application/xml", - getHeaders().get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - - // test with SOAP payload. - sendViaHTTP(Constants.Configuration.HTTP_METHOD_PUT, "urn:putService", "http://localhost:" - + port + "/putService", false); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_PUT, - getHTTPMethod()); - assertAbout(xml()).that(getStringContent()).hasSameContentAs(getEnvelope().toString()); - assertEquals("Not the expected HTTP Header value", "urn:putService", - getHeaders().get("SOAPAction").replace("\"", "")); - assertEquals("Not the expected HTTP Header value", "text/xml", - getHeaders().get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - } - - @Override - public void testSendViaDelete() throws Exception { - // test with REST payload - int port = getBasicHttpServer().getPort(); - sendViaHTTP(Constants.Configuration.HTTP_METHOD_DELETE, "urn:deleteService", - "http://localhost:" + port + "/deleteService", true); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_DELETE, - getHTTPMethod()); - assertEquals("Not the expected content", "/deleteService?part=sample%20data", - getStringContent()); - assertEquals("Not the expected HTTP Header value", - "application/x-www-form-urlencoded;action=\"urn:deleteService\";", getHeaders() - .get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - } - - @Override - public void testSendViaHead() throws Exception { - int port = getBasicHttpServer().getPort(); - sendViaHTTP(Constants.Configuration.HTTP_METHOD_HEAD, "urn:deleteService", - "http://localhost:" + port + "/deleteService", true); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_POST, - getHTTPMethod()); - assertEquals("Not the expected content", getEnvelope().getFirstElement().getFirstElement() - .toString(), getStringContent()); - assertEquals("Not the expected HTTP Header value", "application/xml", - getHeaders().get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - - } - - @Override - public void testSendNOHTTPMethod() throws Exception { - int port = getBasicHttpServer().getPort(); - sendViaHTTP(null, "urn:noService", "http://localhost:" + port + "/noService", true); - assertEquals("Not the expected HTTP Method", Constants.Configuration.HTTP_METHOD_POST, - getHTTPMethod()); - assertEquals("Not the expected content", getEnvelope().getFirstElement().getFirstElement() - .toString(), getStringContent()); - assertNull("Not the expected HTTP Header value", getHeaders().get("SOAPAction")); - assertEquals("Not the expected HTTP Header value", "application/xml", - getHeaders().get(HttpHeaders.CONTENT_TYPE)); - assertEquals("Not the expected HTTP Header value", "localhost", - getHeaders().get(HttpHeaders.HOST)); - assertEquals("Not the expected HTTP Header value", "Axis2", - getHeaders().get(HttpHeaders.USER_AGENT)); - } } Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPSenderTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPSenderTest.java?rev=1779815&r1=1779814&r2=1779815&view=diff ============================================================================== --- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPSenderTest.java (original) +++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/test/org/apache/axis2/transport/http/HTTPSenderTest.java Sun Jan 22 13:47:49 2017 @@ -212,7 +212,8 @@ public abstract class HTTPSenderTest ext * @throws Exception * the exception */ - public void testSendViaHead() throws Exception { + // This is test is bullshit; if we send a HEAD request, we shouldn't expect the method to be POST + public void _testSendViaHead() throws Exception { int port = getBasicHttpServer().getPort(); sendViaHTTP(Constants.Configuration.HTTP_METHOD_HEAD, "urn:deleteService",
