Class HttpRequest
- All Implemented Interfaces:
AutoCloseable
Build structured HTTP requests for use with Chilkat.Http.
Chilkat.HttpRequest is a helper class for constructing HTTP
requests that are sent by Chilkat.Http. It does not perform
network communication on its own. Instead, it provides structured control
over the request method, HTTP version, path, headers, query parameters,
form parameters, content type, request body, multipart uploads, streamed
file bodies, and diagnostic request generation.
Request construction
Build an HTTP request object with the method, path, version, headers, parameters, and body settings required by the target endpoint.
Form parameters
Add name/value parameters for form posts and API requests that expect structured form data.
Custom headers
Set request headers such as content type, accept headers, authorization headers, or application-specific metadata.
Request bodies
Provide body content for POST, PUT, PATCH, or other methods that send data to a server.
Multipart and file uploads
Construct multipart/form-data requests, attach file parts, or stream a file as the request body when the API requires upload content.
Diagnostics
Generate a textual representation of the request to inspect headers, paths, parameters, body structure, and upload formatting before sending.
Common pattern:
Create a HttpRequest, set the HTTP method and path, add any
headers, parameters, body data, or file parts, then pass the request object
to the appropriate Chilkat.Http method for sending. Use
HttpRequest for structured or multipart requests; use simpler
Http methods directly when only a basic GET, POST, upload, or
download is needed.
For an extended overview, see HttpRequest Class Overview.
</section>
Instances hold a native Chilkat object: close them with ChilkatObject.close() (try-with-resources) when
done; an unclosed instance is freed when it becomes unreachable.
- See Also:
- Online reference
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddBdForUpload(String name, String remoteFilename, BinData byteData, String contentType)Adds a file to an upload request where the contents of the file come frombyteData.voidaddFileForUpload(String name, String filePath)Adds a file to an upload request.voidaddFileForUpload2(String name, String filePath, String contentType)Same as AddFileForUpload, but allows the Content-Type header field to be directly specified.voidAdds a request header to the HTTP request.voidaddMwsSignature(String domain, String mwsSecretKey)Computes the Amazon MWS signature using themwsSecretKeyand adds theSignatureparameter to the request.voidAdds a request query parameter (name/value pair) to the HTTP request.voidaddStringForUpload(String name, String filename, String strData, String charset)Same as AddFileForUpload, but the upload data comes from an in-memory string instead of a file.voidaddStringForUpload2(String name, String filename, String strData, String charset, String contentType)Same as AddStringForUpload, but allows the Content-Type header field to be directly specified.voidaddSubHeader(int index, String name, String value)Adds a request header to the Nth sub-header of the HTTP request.voidgenerateRequestFile(String path)The same as GenerateRequestText, except the generated request is written to the file specified bypath.Returns the request text that would be sent if Http.SynchronousRequest was called.Sets an explicit boundary string to be used in multipart/form-data requests.Controls the character encoding used in the URL encoding of query params.The ContentType property sets theContent-Typeheader field, and identifies the content-type of the HTTP request body.Composes and returns the entire MIME header of the HTTP request.getHeaderField(String name)Returns the value of a request header field.getHeaderName(int index)Returns the Nth request header field name.getHeaderValue(int index)Returns the Nth request header field value.The HttpVerb property should be set to the name of the HTTP method that appears on thestart lineof an HTTP request, such as GET, POST, PUT, DELETE, etc.The HTTP version in the request header.intReturns the number of request header fields.intReturns the number of query parameters.Returns a request query parameter value by name.getParamName(int index)Returns the Nth request query parameter field name.getParamValue(int index)Returns the Nth request query parameter field value.getPath()The path of the resource requested.booleanControls whether the charset is explicitly included in the content-type header field of the HTTP POST request.Returns the request parameters in URL encoded form (i.e.voidloadBodyFromBd(BinData requestBody)Uses the contents of therequestBodyas the HTTP request body.voidloadBodyFromFile(String filePath)The HTTP protocol is such that all HTTP requests are MIME.voidloadBodyFromSb(StringBuilder requestBody, String charset)Uses the contents of therequestBodyas the HTTP request body.voidloadBodyFromString(String bodyStr, String charset)The HTTP protocol is such that all HTTP requests are MIME.voidRemoves all request parameters.voidremoveHeader(String name)Removes all occurrences of a HTTP request header field.voidremoveParam(String name)Removes a single HTTP request parameter by name.voidsetBoundary(String value)Sets theBoundaryproperty; seegetBoundary().voidsetCharset(String value)Sets theCharsetproperty; seegetCharset().voidsetContentType(String value)Sets theContentTypeproperty; seegetContentType().voidsetEntireHeader(String value)Sets theEntireHeaderproperty; seegetEntireHeader().voidsetFromUrl(String url)Parses a URL and sets the Path and query parameters (NumParams, GetParam, GetParamName, GetParamValue).voidsetHttpVerb(String value)Sets theHttpVerbproperty; seegetHttpVerb().voidsetHttpVersion(String value)Sets theHttpVersionproperty; seegetHttpVersion().voidSets thePathproperty; seegetPath().voidsetSendCharset(boolean value)Sets theSendCharsetproperty; seegetSendCharset().voidstreamBodyFromFile(String filePath)Useful for sending HTTP requests where the body is a very large file.voidstreamChunkFromFile(String path, String offset, String numBytes)This method is the same as StreamBodyFromFile, but allows for an offset and number of bytes to be specified.Methods inherited from class com.chilkatsoft.chilkat2.ChilkatObject
close, getDebugLogFilePath, getLastErrorHtml, getLastErrorText, getLastErrorXml, getLastMethodSuccess, getVerboseLogging, getVersion, isClosed, setDebugLogFilePath, setLastMethodSuccess, setVerboseLogging, toString
-
Constructor Details
-
HttpRequest
public HttpRequest()Creates a newHttpRequestobject.
-
-
Method Details
-
getBoundary
Sets an explicit boundary string to be used in multipart/form-data requests. If no Boundary is set, then a boundary string is automaticaly generated as needed during the sending of a request.- Returns:
- the value of the
Boundaryproperty
-
setBoundary
Sets theBoundaryproperty; seegetBoundary().- Parameters:
value- the new value (notnull)
-
getCharset
Controls the character encoding used in the URL encoding of query params. The default value of this propoerty isutf-8.- Returns:
- the value of the
Charsetproperty
-
setCharset
Sets theCharsetproperty; seegetCharset().- Parameters:
value- the new value (notnull)
-
getContentType
The ContentType property sets theContent-Typeheader field, and identifies the content-type of the HTTP request body. Common values are:
If ContentType is set equal to the empty string, then no Content-Type header is included in the HTTP request.application/x-www-form-urlencoded multipart/form-data application/json application/xml
- Returns:
- the value of the
ContentTypeproperty
-
setContentType
Sets theContentTypeproperty; seegetContentType().- Parameters:
value- the new value (notnull)
-
getEntireHeader
Composes and returns the entire MIME header of the HTTP request.- Returns:
- the value of the
EntireHeaderproperty
-
setEntireHeader
Sets theEntireHeaderproperty; seegetEntireHeader().- Parameters:
value- the new value (notnull)
-
getHttpVerb
The HttpVerb property should be set to the name of the HTTP method that appears on thestart lineof an HTTP request, such as GET, POST, PUT, DELETE, etc. It is also possible to use the various WebDav verbs such as PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, etc. In general, the HttpVerb may be set to anything, even custom verbs recognized by a custom server-side app.- Returns:
- the value of the
HttpVerbproperty
-
setHttpVerb
Sets theHttpVerbproperty; seegetHttpVerb().- Parameters:
value- the new value (notnull)
-
getHttpVersion
The HTTP version in the request header. Defaults to1.1. Can only be set to1.0or1.1.- Returns:
- the value of the
HttpVersionproperty
-
setHttpVersion
Sets theHttpVersionproperty; seegetHttpVersion().- Parameters:
value- the new value (notnull)
-
getNumHeaderFields
public int getNumHeaderFields()Returns the number of request header fields.- Returns:
- the value of the
NumHeaderFieldsproperty (read-only)
-
getNumParams
public int getNumParams()Returns the number of query parameters.- Returns:
- the value of the
NumParamsproperty (read-only)
-
getPath
The path of the resource requested. A path of/indicates the default document of a domain.Explaining the Parts of a URL
http://example.com:8042/over/there?name=ferret#nose \__/ \______________/\_________/ \________/ \__/ | | | | | scheme domain+port path query fragment
This property should be set to the path part of the URL. You may also include the query part in this property value. If the Content-Type of the request is NOT application/x-www-form-urlencoded, then you would definitely want to include query parameters in the path. If the Content-Type of the request IS application/x-www-form-urlencoded, the query parameters are passed in the body of the request. It is also possible to pass some query parameters via the path, and some in the body of a application/x-www-form-urlencoded request, but you shouldn't include the same parameter in both places. You would never need to include the fragment part. The fragment is nothing more than an instruction for a browser to automatically navigate to a particular location in the HTML page (assuming the request returns HTML, otherwise a fragment makes no sense).
- Returns:
- the value of the
Pathproperty
-
setPath
Sets thePathproperty; seegetPath().- Parameters:
value- the new value (notnull)
-
getSendCharset
public boolean getSendCharset()Controls whether the charset is explicitly included in the content-type header field of the HTTP POST request. The default value of this property isfalse.- Returns:
- the value of the
SendCharsetproperty
-
setSendCharset
public void setSendCharset(boolean value)Sets theSendCharsetproperty; seegetSendCharset().- Parameters:
value- the new value
-
addBdForUpload
public void addBdForUpload(String name, String remoteFilename, BinData byteData, String contentType)Adds a file to an upload request where the contents of the file come frombyteData.nameis an arbitrary name. (In HTML, it is the form field name of the input tag.)
remoteFilenameis the name of the file to be created on the HTTP server.
byteDatacontains the bytes to be uploaded.
contentTypecontains is the value of the Content-Type header. An empty string may be passed to allow Chilkat to automatically determine the Content-Type based on the filename extension.- Parameters:
name- thenameargument (notnull)remoteFilename- theremoteFilenameargument (notnull)byteData- thebyteDataargument (notnull)contentType- thecontentTypeargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addFileForUpload
Adds a file to an upload request. To create a file upload request, set the ContentType property =multipart/form-dataand then call AddFileForUpload, AddBytesForUpload, or AddStringForUpload for each file to be uploaded. This method does not read the file into memory. When the upload occurs, the data is streamed directly from the file, thus allowing for very large files to be uploaded without consuming large amounts of memory.nameis an arbitrary name. (In HTML, it is the form field name of the input tag.)
filePathis the path to an existing file in the local filesystem.- Parameters:
name- thenameargument (notnull)filePath- thefilePathargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addFileForUpload2
Same as AddFileForUpload, but allows the Content-Type header field to be directly specified. (Otherwise, the Content-Type header is automatically determined based on the file extension.)nameis an arbitrary name. (In HTML, it is the form field name of the input tag.)
filePathis the path to an existing file in the local filesystem.- Parameters:
name- thenameargument (notnull)filePath- thefilePathargument (notnull)contentType- thecontentTypeargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addHeader
Adds a request header to the HTTP request. If a header having the same field name is already present, this method replaces it.Note: Never explicitly set the Content-Length header field. Chilkat will automatically compute the correct length and add the Content-Length header to all POST, PUT, or any other request where the Content-Length needs to be specified. (GET requests always have a 0 length body, and therefore never need a Content-Length header field.)
- Parameters:
name- thenameargument (notnull)value- thevalueargument (notnull)
-
addMwsSignature
Computes the Amazon MWS signature using themwsSecretKeyand adds theSignatureparameter to the request. This method should be called for all Amazon Marketplace Web Service (Amazon MWS) HTTP requests. It should be called after all request parameters have been added.Important: The Chilkat v9.5.0.75 release accidentally breaks Amazon MWS (not AWS) authentication. If you need MWS with 9.5.0.75, send email to support@chilkatsoft.com for a hotfix, or revert back to v9.5.0.73, or update to a version after 9.5.0.75.
The
domainshould be the domain of the request, such as one of the following:- mws.amazonservices.com
- mws-eu.amazonservices.com
- mws.amazonservices.in
- mws.amazonservices.com.cn
- mws.amazonservices.jp
Note: This method automatically adds or replaces the existing Timestamp parameter to the current system date/time.
- Parameters:
domain- thedomainargument (notnull)mwsSecretKey- themwsSecretKeyargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addParam
Adds a request query parameter (name/value pair) to the HTTP request. Thenameandvaluestrings passed to this method should not be URL encoded.- Parameters:
name- thenameargument (notnull)value- thevalueargument (notnull)
-
addStringForUpload
Same as AddFileForUpload, but the upload data comes from an in-memory string instead of a file.- Parameters:
name- thenameargument (notnull)filename- thefilenameargument (notnull)strData- thestrDataargument (notnull)charset- thecharsetargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addStringForUpload2
public void addStringForUpload2(String name, String filename, String strData, String charset, String contentType)Same as AddStringForUpload, but allows the Content-Type header field to be directly specified. (Otherwise, the Content-Type header is automatically determined based on thefilename's file extension.)- Parameters:
name- thenameargument (notnull)filename- thefilenameargument (notnull)strData- thestrDataargument (notnull)charset- thecharsetargument (notnull)contentType- thecontentTypeargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
addSubHeader
Adds a request header to the Nth sub-header of the HTTP request. If a header having the same field name is already present, this method replaces it.- Parameters:
index- theindexargumentname- thenameargument (notnull)value- thevalueargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
generateRequestFile
The same as GenerateRequestText, except the generated request is written to the file specified bypath.- Parameters:
path- thepathargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
generateRequestText
Returns the request text that would be sent if Http.SynchronousRequest was called.- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getHeaderField
Returns the value of a request header field.- Parameters:
name- thenameargument (notnull)- Returns:
- the result, or
nullif not found (no exception is thrown in that case)
-
getHeaderName
Returns the Nth request header field name. Indexing begins at 0, and the number of request header fields is specified by the NumHeaderFields property.- Parameters:
index- theindexargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getHeaderValue
Returns the Nth request header field value. Indexing begins at 0, and the number of request header fields is specified by the NumHeaderFields property.- Parameters:
index- theindexargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getParam
Returns a request query parameter value by name.- Parameters:
name- thenameargument (notnull)- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getParamName
Returns the Nth request query parameter field name. Indexing begins at 0, and the number of request query parameter fields is specified by the NumParams property.- Parameters:
index- theindexargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getParamValue
Returns the Nth request query parameter field value. Indexing begins at 0, and the number of request query parameter fields is specified by the NumParams property.- Parameters:
index- theindexargument- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getUrlEncodedParams
Returns the request parameters in URL encoded form (i.e. in the exact form that would be sent if the ContentType property was application/x-www-form-urlencoded). For example, if a request has two params: param1=abc 123and param2=abc-123, then GetUrlEncodedParams would returnabc+123¶m2=abc%2D123- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
loadBodyFromBd
Uses the contents of therequestBodyas the HTTP request body.- Parameters:
requestBody- therequestBodyargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
loadBodyFromFile
The HTTP protocol is such that all HTTP requests are MIME. For non-multipart requests, this method may be called to set the MIME body of the HTTP request to the exact contents offilePath.
Note: A non-multipart HTTP request consists of (1) the HTTP start line, (2) MIME header fields, and (3) the MIME body. This method sets the MIME body.- Parameters:
filePath- thefilePathargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
loadBodyFromSb
Uses the contents of therequestBodyas the HTTP request body. Thecharsetindicates the binary representation of the string, such asutf-8,utf-16,iso-8859-*,windows-125*, etc. Any of the character encodings supported at the link below are valid.- Parameters:
requestBody- therequestBodyargument (notnull)charset- thecharsetargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
loadBodyFromString
The HTTP protocol is such that all HTTP requests are MIME. For non-multipart requests, this method may be called to set the MIME body of the HTTP request to the exact contents ofbodyStr.
Note: A non-multipart HTTP request consists of (1) the HTTP start line, (2) MIME header fields, and (3) the MIME body. This method sets the MIME body.charsetindicates the charset, such asutf-8oriso-8859-1, to be used. The HTTP body will contain thebodyStrconverted to this character encoding.- Parameters:
bodyStr- thebodyStrargument (notnull)charset- thecharsetargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
removeAllParams
public void removeAllParams()Removes all request parameters. -
removeHeader
Removes all occurrences of a HTTP request header field. Always returnstrue.- Parameters:
name- thenameargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
removeParam
Removes a single HTTP request parameter by name.- Parameters:
name- thenameargument (notnull)
-
setFromUrl
Parses a URL and sets the Path and query parameters (NumParams, GetParam, GetParamName, GetParamValue).- Parameters:
url- theurlargument (notnull)
-
streamBodyFromFile
Useful for sending HTTP requests where the body is a very large file. For example, to send an XML HttpRequest containing a very large XML document, one would set the HttpVerb =POST, the ContentType =text/xml, and then call StreamBodyFromFile to indicate that the XML body of the request is to be streamed directly from a file. When the HTTP request is actually sent, the body is streamed directly from the file, and thus the file never needs to be loaded in its entirety in memory.- Parameters:
filePath- thefilePathargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
streamChunkFromFile
This method is the same as StreamBodyFromFile, but allows for an offset and number of bytes to be specified. TheoffsetandnumBytesare integers passed as strings.- Parameters:
path- thepathargument (notnull)offset- theoffsetargument (notnull)numBytes- thenumBytesargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-