You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2017/01/22 19:45:23 UTC
svn commit: r1779847 - in /axis/axis2/java/core/trunk/modules/transport:
http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/
http/src/org/apache/axis2/transport/http/
http/src/org/apache/axis2/transport/http/impl/httpclient4/
Author: veithen
Date: Sun Jan 22 19:45:22 2017
New Revision: 1779847
URL: http://svn.apache.org/viewvc?rev=1779847&view=rev
Log:
Unify the obtainHTTPHeaderInformation code.
Modified:
axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/Request.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java
Modified: axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java?rev=1779847&r1=1779846&r2=1779847&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java Sun Jan 22 19:45:22 2017
@@ -22,30 +22,23 @@ package org.apache.axis2.transport.http.
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
import java.util.zip.GZIPInputStream;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
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.CommonsTransportHeaders;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HTTPSender;
import org.apache.axis2.transport.http.Request;
-import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpMethodBase;
-import org.apache.commons.httpclient.HeaderElement;
import org.apache.commons.httpclient.HttpConnectionManager;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -67,115 +60,9 @@ public class HTTPSenderImpl extends HTTP
return new RequestImpl(this, msgContext, methodName, url, requestEntity);
}
- /**
- * Collect the HTTP header information and set them in the message context
- *
- * @param method
- * HttpMethodBase from which to get information
- * @param msgContext
- * the MessageContext in which to place the information... OR
- * NOT!
- * @throws AxisFault
- * if problems occur
- */
- protected void obtainHTTPHeaderInformation(Request request, HttpMethod method, MessageContext msgContext)
- throws AxisFault {
- // Set RESPONSE properties onto the REQUEST message context. They will
- // need to be copied off the request context onto
- // the response context elsewhere, for example in the
- // OutInOperationClient.
- Map transportHeaders = new CommonsTransportHeaders(request.getResponseHeaders());
- msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, transportHeaders);
- msgContext.setProperty(HTTPConstants.MC_HTTP_STATUS_CODE,
- new Integer(request.getStatusCode()));
- Header header = method.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);
-
- if (header != null) {
- HeaderElement[] headers = header.getElements();
- MessageContext inMessageContext = msgContext.getOperationContext().getMessageContext(
- WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-
- Object contentType = header.getValue();
- Object charSetEnc = null;
-
- for (int i = 0; i < headers.length; i++) {
- NameValuePair charsetEnc = headers[i]
- .getParameterByName(HTTPConstants.CHAR_SET_ENCODING);
- if (charsetEnc != null) {
- charSetEnc = charsetEnc.getValue();
- }
- }
-
- if (inMessageContext != null) {
- inMessageContext.setProperty(Constants.Configuration.CONTENT_TYPE, contentType);
- inMessageContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
- charSetEnc);
- } else {
-
- // Transport details will be stored in a HashMap so that anybody
- // interested can
- // retrieve them
- HashMap transportInfoMap = new HashMap();
- transportInfoMap.put(Constants.Configuration.CONTENT_TYPE, contentType);
- transportInfoMap.put(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
-
- // the HashMap is stored in the outgoing message.
- msgContext
- .setProperty(Constants.Configuration.TRANSPORT_INFO_MAP, transportInfoMap);
- }
- }
-
- String sessionCookie = null;
- // Process old style headers first
- Header[] cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE);
- String customCoookiId = (String) msgContext.getProperty(Constants.CUSTOM_COOKIE_ID);
- for (int i = 0; i < cookieHeaders.length; i++) {
- HeaderElement[] elements = cookieHeaders[i].getElements();
- for (int e = 0; e < elements.length; e++) {
- HeaderElement element = elements[e];
- if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
- || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- }
- }
- // Overwrite old style cookies with new style ones if present
- cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE2);
- for (int i = 0; i < cookieHeaders.length; i++) {
- HeaderElement[] elements = cookieHeaders[i].getElements();
- for (int e = 0; e < elements.length; e++) {
- HeaderElement element = elements[e];
- if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
- || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- }
- }
-
- if (sessionCookie != null) {
- msgContext.getServiceContext().setProperty(HTTPConstants.COOKIE_STRING, sessionCookie);
- }
- }
-
- private String processCookieHeader(HeaderElement element) {
- String cookie = element.getName() + "=" + element.getValue();
- NameValuePair[] parameters = element.getParameters();
- for (int j = 0; parameters != null && j < parameters.length; j++) {
- NameValuePair parameter = parameters[j];
- cookie = cookie + "; " + parameter.getName() + "=" + parameter.getValue();
- }
- return cookie;
- }
-
protected void processResponse(Request request, HttpMethodBase httpMethod, MessageContext msgContext)
throws IOException {
- obtainHTTPHeaderInformation(request, httpMethod, msgContext);
+ obtainHTTPHeaderInformation(request, msgContext);
InputStream in = httpMethod.getResponseBodyAsStream();
if (in == null) {
Modified: axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java?rev=1779847&r1=1779846&r2=1779847&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java Sun Jan 22 19:45:22 2017
@@ -21,7 +21,9 @@ package org.apache.axis2.transport.http.
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.axiom.mime.Header;
import org.apache.axis2.AxisFault;
@@ -35,6 +37,7 @@ import org.apache.axis2.transport.http.H
import org.apache.axis2.transport.http.Request;
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.HeaderElement;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethodBase;
@@ -52,6 +55,8 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
final class RequestImpl implements Request {
+ private static final String[] COOKIE_HEADER_NAMES = { HTTPConstants.HEADER_SET_COOKIE, HTTPConstants.HEADER_SET_COOKIE2 };
+
private static final Log log = LogFactory.getLog(RequestImpl.class);
protected final HTTPSenderImpl sender;
@@ -140,11 +145,33 @@ final class RequestImpl implements Reque
}
@Override
+ public String getResponseHeader(String name) {
+ org.apache.commons.httpclient.Header header = method.getResponseHeader(name);
+ return header == null ? null : header.getValue();
+ }
+
+ @Override
public Header[] getResponseHeaders() {
return convertHeaders(method.getResponseHeaders());
}
@Override
+ public Map<String,String> getCookies() {
+ Map<String,String> cookies = null;
+ for (String name : COOKIE_HEADER_NAMES) {
+ for (org.apache.commons.httpclient.Header header : method.getResponseHeaders(name)) {
+ for (HeaderElement element : header.getElements()) {
+ if (cookies == null) {
+ cookies = new HashMap<String,String>();
+ }
+ cookies.put(element.getName(), element.getValue());
+ }
+ }
+ }
+ return cookies;
+ }
+
+ @Override
public void execute() throws AxisFault {
try {
executeMethod();
@@ -190,7 +217,7 @@ final class RequestImpl implements Reque
/* 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(this, method, msgContext);
+ sender.obtainHTTPHeaderInformation(this, msgContext);
// Since we don't expect any content with a 202 response, we must release the connection
method.releaseConnection();
} else if (statusCode >= 200 && statusCode < 300) {
Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java?rev=1779847&r1=1779846&r2=1779847&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java Sun Jan 22 19:45:22 2017
@@ -20,6 +20,7 @@
package org.apache.axis2.transport.http;
+import org.apache.axiom.mime.ContentType;
import org.apache.axiom.mime.Header;
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
@@ -29,12 +30,18 @@ import org.apache.axis2.context.MessageC
import org.apache.axis2.context.NamedValue;
import org.apache.axis2.transport.MessageFormatter;
import org.apache.axis2.util.MessageProcessorSelector;
+import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.http.HeaderElement;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
import org.apache.http.protocol.HTTP;
import java.io.IOException;
import java.net.URL;
+import java.text.ParseException;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -270,4 +277,66 @@ public abstract class HTTPSender extends
return userAgentString;
}
+
+ public void obtainHTTPHeaderInformation(Request request, MessageContext msgContext) throws AxisFault {
+ // Set RESPONSE properties onto the REQUEST message context. They will
+ // need to be copied off the request context onto
+ // the response context elsewhere, for example in the
+ // OutInOperationClient.
+ msgContext.setProperty(
+ MessageContext.TRANSPORT_HEADERS,
+ new CommonsTransportHeaders(request.getResponseHeaders()));
+ msgContext.setProperty(
+ HTTPConstants.MC_HTTP_STATUS_CODE,
+ new Integer(request.getStatusCode()));
+
+ String contentTypeString = request.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);
+ if (contentTypeString != null) {
+ ContentType contentType;
+ try {
+ contentType = new ContentType(contentTypeString);
+ } catch (ParseException ex) {
+ throw AxisFault.makeFault(ex);
+ }
+ String charSetEnc = contentType.getParameter(HTTPConstants.CHAR_SET_ENCODING);
+ MessageContext inMessageContext = msgContext.getOperationContext().getMessageContext(
+ WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ if (inMessageContext != null) {
+ inMessageContext.setProperty(Constants.Configuration.CONTENT_TYPE, contentTypeString);
+ inMessageContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
+ } else {
+ // Transport details will be stored in a HashMap so that anybody
+ // interested can
+ // retrieve them
+ Map<String,String> transportInfoMap = new HashMap<String,String>();
+ transportInfoMap.put(Constants.Configuration.CONTENT_TYPE, contentTypeString);
+ transportInfoMap.put(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
+ // the HashMap is stored in the outgoing message.
+ msgContext.setProperty(Constants.Configuration.TRANSPORT_INFO_MAP, transportInfoMap);
+ }
+ }
+
+ Map<String,String> cookies = request.getCookies();
+ if (cookies != null) {
+ String customCookieId = (String) msgContext.getProperty(Constants.CUSTOM_COOKIE_ID);
+ String cookieString = null;
+ if (customCookieId != null) {
+ cookieString = buildCookieString(cookies, customCookieId);
+ }
+ if (cookieString == null) {
+ cookieString = buildCookieString(cookies, Constants.SESSION_COOKIE);
+ }
+ if (cookieString == null) {
+ cookieString = buildCookieString(cookies, Constants.SESSION_COOKIE_JSESSIONID);
+ }
+ if (cookieString != null) {
+ msgContext.getServiceContext().setProperty(HTTPConstants.COOKIE_STRING, cookieString);
+ }
+ }
+ }
+
+ private String buildCookieString(Map<String,String> cookies, String name) {
+ String value = cookies.get(name);
+ return value == null ? null : name + "=" + value;
+ }
}
Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/Request.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/Request.java?rev=1779847&r1=1779846&r2=1779847&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/Request.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/Request.java Sun Jan 22 19:45:22 2017
@@ -18,6 +18,8 @@
*/
package org.apache.axis2.transport.http;
+import java.util.Map;
+
import org.apache.axiom.mime.Header;
import org.apache.axis2.AxisFault;
@@ -33,5 +35,7 @@ public interface Request {
void execute() throws AxisFault;
int getStatusCode();
String getStatusText();
+ String getResponseHeader(String name);
Header[] getResponseHeaders();
+ Map<String,String> getCookies();
}
Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java?rev=1779847&r1=1779846&r2=1779847&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java Sun Jan 22 19:45:22 2017
@@ -20,24 +20,14 @@
package org.apache.axis2.transport.http.impl.httpclient4;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
-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.CommonsTransportHeaders;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HTTPSender;
import org.apache.axis2.transport.http.Request;
-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.HeaderElement;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.params.AuthPolicy;
import org.apache.http.client.params.ClientPNames;
@@ -55,12 +45,7 @@ import org.apache.http.params.CoreConnec
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.params.HttpParams;
-import java.io.IOException;
-import java.io.InputStream;
import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.zip.GZIPInputStream;
public class HTTPSenderImpl extends HTTPSender {
@@ -81,109 +66,6 @@ public class HTTPSenderImpl extends HTTP
}
/**
- * Collect the HTTP header information and set them in the message context
- *
- * @param httpResponse which holds the header information
- * @param msgContext the MessageContext in which to place the information... OR
- * NOT!
- * @throws AxisFault if problems occur
- */
- protected void obtainHTTPHeaderInformation(Request request, HttpResponse response, MessageContext msgContext)
- throws AxisFault {
- // Set RESPONSE properties onto the REQUEST message context. They will
- // need to be copied off the request context onto
- // the response context elsewhere, for example in the
- // OutInOperationClient.
- Map transportHeaders = new CommonsTransportHeaders(request.getResponseHeaders());
- msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, transportHeaders);
- msgContext.setProperty(HTTPConstants.MC_HTTP_STATUS_CODE,
- new Integer(request.getStatusCode()));
- Header header = response.getFirstHeader(HTTPConstants.HEADER_CONTENT_TYPE);
-
- if (header != null) {
- HeaderElement[] headers = header.getElements();
- MessageContext inMessageContext = msgContext.getOperationContext().getMessageContext(
- WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-
- Object contentType = header.getValue();
- Object charSetEnc = null;
-
- for (int i = 0; i < headers.length; i++) {
- NameValuePair charsetEnc = headers[i]
- .getParameterByName(HTTPConstants.CHAR_SET_ENCODING);
- if (charsetEnc != null) {
- charSetEnc = charsetEnc.getValue();
- }
- }
-
- if (inMessageContext != null) {
- inMessageContext.setProperty(Constants.Configuration.CONTENT_TYPE, contentType);
- inMessageContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
- charSetEnc);
- } else {
-
- // Transport details will be stored in a HashMap so that anybody
- // interested can
- // retrieve them
- HashMap transportInfoMap = new HashMap();
- transportInfoMap.put(Constants.Configuration.CONTENT_TYPE, contentType);
- transportInfoMap.put(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
-
- // the HashMap is stored in the outgoing message.
- msgContext
- .setProperty(Constants.Configuration.TRANSPORT_INFO_MAP, transportInfoMap);
- }
- }
-
- String sessionCookie = null;
- // Process old style headers first
- Header[] cookieHeaders = response.getHeaders(HTTPConstants.HEADER_SET_COOKIE);
- String customCoookiId = (String) msgContext.getProperty(Constants.CUSTOM_COOKIE_ID);
- for (int i = 0; i < cookieHeaders.length; i++) {
- HeaderElement[] elements = cookieHeaders[i].getElements();
- for (int e = 0; e < elements.length; e++) {
- HeaderElement element = elements[e];
- if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
- || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- }
- }
- // Overwrite old style cookies with new style ones if present
- cookieHeaders = response.getHeaders(HTTPConstants.HEADER_SET_COOKIE2);
- for (int i = 0; i < cookieHeaders.length; i++) {
- HeaderElement[] elements = cookieHeaders[i].getElements();
- for (int e = 0; e < elements.length; e++) {
- HeaderElement element = elements[e];
- if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName())
- || Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- }
- }
-
- if (sessionCookie != null) {
- msgContext.getServiceContext().setProperty(HTTPConstants.COOKIE_STRING, sessionCookie);
- }
- }
-
- private String processCookieHeader(HeaderElement element) {
- String cookie = element.getName() + "=" + element.getValue();
- NameValuePair[] parameters = element.getParameters();
- for (int j = 0; parameters != null && j < parameters.length; j++) {
- NameValuePair parameter = parameters[j];
- cookie = cookie + "; " + parameter.getName() + "=" + parameter.getValue();
- }
- return cookie;
- }
-
- /**
* This is used to get the dynamically set time out values from the message
* context. If the values are not available or invalid then the default
* values or the values set by the configuration will be used
Modified: axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java?rev=1779847&r1=1779846&r2=1779847&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java (original)
+++ axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java Sun Jan 22 19:45:22 2017
@@ -23,7 +23,9 @@ import java.io.InputStream;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.zip.GZIPInputStream;
import org.apache.axiom.mime.Header;
@@ -40,6 +42,7 @@ 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.HeaderElement;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
@@ -63,6 +66,8 @@ import org.apache.http.protocol.HttpCont
import org.apache.http.util.EntityUtils;
final class RequestImpl implements Request {
+ private static final String[] COOKIE_HEADER_NAMES = { HTTPConstants.HEADER_SET_COOKIE, HTTPConstants.HEADER_SET_COOKIE2 };
+
private static final Log log = LogFactory.getLog(RequestImpl.class);
protected final HTTPSenderImpl sender;
@@ -153,11 +158,33 @@ final class RequestImpl implements Reque
}
@Override
+ public String getResponseHeader(String name) {
+ org.apache.http.Header header = response.getFirstHeader(name);
+ return header == null ? null : header.getValue();
+ }
+
+ @Override
public Header[] getResponseHeaders() {
return convertHeaders(response.getAllHeaders());
}
@Override
+ public Map<String,String> getCookies() {
+ Map<String,String> cookies = null;
+ for (String name : COOKIE_HEADER_NAMES) {
+ for (org.apache.http.Header header : response.getHeaders(name)) {
+ for (HeaderElement element : header.getElements()) {
+ if (cookies == null) {
+ cookies = new HashMap<String,String>();
+ }
+ cookies.put(element.getName(), element.getValue());
+ }
+ }
+ }
+ return cookies;
+ }
+
+ @Override
public void execute() throws AxisFault {
try {
executeMethod();
@@ -215,7 +242,7 @@ final class RequestImpl implements Reque
throw new AxisFault(Messages.getMessage("transportError", String.valueOf(statusCode),
getStatusText()));
}
- sender.obtainHTTPHeaderInformation(this, response, msgContext);
+ sender.obtainHTTPHeaderInformation(this, msgContext);
if (processResponse) {
OperationContext opContext = msgContext.getOperationContext();
MessageContext inMessageContext = opContext == null ? null