类 SimpleHttpInvokerRequestExecutor
- java.lang.Object
- org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor
- org.springframework.remoting.httpinvoker.SimpleHttpInvokerRequestExecutor
- 所有已实现的接口:
Aware
,BeanClassLoaderAware
,HttpInvokerRequestExecutor
public class SimpleHttpInvokerRequestExecutor extends AbstractHttpInvokerRequestExecutor
HttpInvokerRequestExecutor
implementation that uses standard Java facilities to execute POST requests, without support for HTTP authentication or advanced configuration options.Designed for easy subclassing, customizing specific template methods. However, consider
HttpComponentsHttpInvokerRequestExecutor
for more sophisticated needs: The standardHttpURLConnection
class is rather limited in its capabilities.- 从以下版本开始:
- 1.1
- 作者:
- Juergen Hoeller
- 另请参阅:
HttpURLConnection
字段概要
从类继承的字段 org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor
CONTENT_TYPE_SERIALIZED_OBJECT, ENCODING_GZIP, HTTP_HEADER_ACCEPT_ENCODING, HTTP_HEADER_ACCEPT_LANGUAGE, HTTP_HEADER_CONTENT_ENCODING, HTTP_HEADER_CONTENT_LENGTH, HTTP_HEADER_CONTENT_TYPE, HTTP_METHOD_POST, logger
构造器概要
构造器 构造器 说明 SimpleHttpInvokerRequestExecutor()
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected RemoteInvocationResult
doExecuteRequest(HttpInvokerClientConfiguration config, ByteArrayOutputStream baos)
Execute the given request through a standardHttpURLConnection
.protected boolean
isGzipResponse(HttpURLConnection con)
Determine whether the given response is a GZIP response.protected HttpURLConnection
openConnection(HttpInvokerClientConfiguration config)
Open anHttpURLConnection
for the given remote invocation request.protected void
prepareConnection(HttpURLConnection connection, int contentLength)
Prepare the given HTTP connection.protected InputStream
readResponseBody(HttpInvokerClientConfiguration config, HttpURLConnection con)
Extract the response body from the given executed remote invocation request.void
setConnectTimeout(int connectTimeout)
Set the underlying URLConnection's connect timeout (in milliseconds).void
setReadTimeout(int readTimeout)
Set the underlying URLConnection's read timeout (in milliseconds).protected void
validateResponse(HttpInvokerClientConfiguration config, HttpURLConnection con)
Validate the given response as contained in theHttpURLConnection
object, throwing an exception if it does not correspond to a successful HTTP response.protected void
writeRequestBody(HttpInvokerClientConfiguration config, HttpURLConnection con, ByteArrayOutputStream baos)
Set the given serialized remote invocation as request body.从类继承的方法 org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor
createObjectInputStream, decorateInputStream, decorateOutputStream, doReadRemoteInvocationResult, doWriteRemoteInvocation, executeRequest, getBeanClassLoader, getByteArrayOutputStream, getContentType, isAcceptGzipEncoding, readRemoteInvocationResult, setAcceptGzipEncoding, setBeanClassLoader, setContentType, writeRemoteInvocation
构造器详细资料
SimpleHttpInvokerRequestExecutor
public SimpleHttpInvokerRequestExecutor()
方法详细资料
setConnectTimeout
public void setConnectTimeout(int connectTimeout)
Set the underlying URLConnection's connect timeout (in milliseconds). A timeout value of 0 specifies an infinite timeout.Default is the system's default timeout.
setReadTimeout
public void setReadTimeout(int readTimeout)
Set the underlying URLConnection's read timeout (in milliseconds). A timeout value of 0 specifies an infinite timeout.Default is the system's default timeout.
doExecuteRequest
protected RemoteInvocationResult doExecuteRequest(HttpInvokerClientConfiguration config, ByteArrayOutputStream baos) throws IOException, ClassNotFoundException
Execute the given request through a standardHttpURLConnection
.This method implements the basic processing workflow: The actual work happens in this class's template methods.
- 指定者:
doExecuteRequest
在类中AbstractHttpInvokerRequestExecutor
- 参数:
config
- the HTTP invoker configuration that specifies the target servicebaos
- the ByteArrayOutputStream that contains the serialized RemoteInvocation object- 返回:
- the RemoteInvocationResult object
- 抛出:
IOException
- if thrown by I/O operationsClassNotFoundException
- if thrown during deserialization- 另请参阅:
openConnection(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration)
,prepareConnection(java.net.HttpURLConnection, int)
,writeRequestBody(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection, java.io.ByteArrayOutputStream)
,validateResponse(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection)
,readResponseBody(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection)
openConnection
protected HttpURLConnection openConnection(HttpInvokerClientConfiguration config) throws IOException
Open anHttpURLConnection
for the given remote invocation request.- 参数:
config
- the HTTP invoker configuration that specifies the target service- 返回:
- the HttpURLConnection for the given request
- 抛出:
IOException
- if thrown by I/O methods- 另请参阅:
URL.openConnection()
prepareConnection
protected void prepareConnection(HttpURLConnection connection, int contentLength) throws IOException
Prepare the given HTTP connection.The default implementation specifies POST as method, "application/x-java-serialized-object" as "Content-Type" header, and the given content length as "Content-Length" header.
- 参数:
connection
- the HTTP connection to preparecontentLength
- the length of the content to send- 抛出:
IOException
- if thrown by HttpURLConnection methods- 另请参阅:
HttpURLConnection.setRequestMethod(java.lang.String)
,URLConnection.setRequestProperty(java.lang.String, java.lang.String)
writeRequestBody
protected void writeRequestBody(HttpInvokerClientConfiguration config, HttpURLConnection con, ByteArrayOutputStream baos) throws IOException
Set the given serialized remote invocation as request body.The default implementation simply write the serialized invocation to the HttpURLConnection's OutputStream. This can be overridden, for example, to write a specific encoding and potentially set appropriate HTTP request headers.
- 参数:
config
- the HTTP invoker configuration that specifies the target servicecon
- the HttpURLConnection to write the request body tobaos
- the ByteArrayOutputStream that contains the serialized RemoteInvocation object- 抛出:
IOException
- if thrown by I/O methods- 另请参阅:
URLConnection.getOutputStream()
,URLConnection.setRequestProperty(java.lang.String, java.lang.String)
validateResponse
protected void validateResponse(HttpInvokerClientConfiguration config, HttpURLConnection con) throws IOException
Validate the given response as contained in theHttpURLConnection
object, throwing an exception if it does not correspond to a successful HTTP response.Default implementation rejects any HTTP status code beyond 2xx, to avoid parsing the response body and trying to deserialize from a corrupted stream.
- 参数:
config
- the HTTP invoker configuration that specifies the target servicecon
- the HttpURLConnection to validate- 抛出:
IOException
- if validation failed- 另请参阅:
HttpURLConnection.getResponseCode()
readResponseBody
protected InputStream readResponseBody(HttpInvokerClientConfiguration config, HttpURLConnection con) throws IOException
Extract the response body from the given executed remote invocation request.The default implementation simply reads the serialized invocation from the HttpURLConnection's InputStream. If the response is recognized as GZIP response, the InputStream will get wrapped in a GZIPInputStream.
- 参数:
config
- the HTTP invoker configuration that specifies the target servicecon
- the HttpURLConnection to read the response body from- 返回:
- an InputStream for the response body
- 抛出:
IOException
- if thrown by I/O methods- 另请参阅:
isGzipResponse(java.net.HttpURLConnection)
,GZIPInputStream
,URLConnection.getInputStream()
,HttpURLConnection.getHeaderField(int)
,HttpURLConnection.getHeaderFieldKey(int)
isGzipResponse
protected boolean isGzipResponse(HttpURLConnection con)
Determine whether the given response is a GZIP response.Default implementation checks whether the HTTP "Content-Encoding" header contains "gzip" (in any casing).
- 参数:
con
- the HttpURLConnection to check