Documentation Archive Developer
Search
[an error occurred while processing this directive] PATH  Documentation > WebObjects 4.5 > WebObjects Reference

Table of Contents

WORequest


Inherits from: WOMessage NSObject
Declared in: WebObjects/WORequest.h




Class Description


A WORequest object typically represents an HTTP request and thus constitutes an event that requires a reaction from a WebObjects application. WORequest objects encapsulate the data transmitted to an HTTP server in a request. Requests usually originate from user actions in a browser, such as the submission of a URL or a mouse click on a hyperlink, button, or active image in a page. From the perspective of WebObjects, the URL identifies a WebObjects application and the click on a control usually results in the display of a page of a WebObjects application. Such actions cause the browser to send an HTTP request to an HTTP server, which forwards the request to a WebObjects adaptor, which converts it to a WORequest object and sends that object to the appropriate request handler.

WORequest objects can also be created from HTTP requests sent by client-side components (Java applets specially modified to interact with the server side of a WebObjects application), and from HTTP requests submitted by custom client-side programs that don't use the Java client-side components. As well, WORequest objects can originate from custom adaptors that handle HTTP requests or non-HTTP events. (All the adaptors shipped with WebObjects handle HTTP events only).

Since adaptors usually create WORequest objects, and since you can usually use WebObjects' adaptors without modifications, you probably won't have to create your own instances of WORequest in your code (although you can if you need to). More typically, your code will obtain information from WORequest objects as they become available during certain points in the request-response loop. The application supplies WORequest objects as arguments in the takeValuesFromRequest:inContext: and invokeActionForRequest:inContext: methods, which are implementable by WOApplication, WOSession, WOComponent, and WOElement objects. You can also obtain the current WORequest object at any time during request handling through WOContext's request method.



Note that WORequest inherits from WOMessage. Of particular interest are those WOMessage methods that allow you to access the request headers ( headerForKey:, headerKeys, headers, and headersForKey:) and content, which return the contents of the request.


Programmatically Creating WORequest Objects

As stated above, in most WebObjects applications WORequest objects are created for you; your application is more concerned with interpreting and responding to WORequest objects. However, it is possible to place two WebObjects applications in a peer-to-peer configuration and have them communicate using WORequest and WOResponse objects. In situations like these, your application will need to create the WORequest objects itself and send them to the peer application using WOHTTPConnection.

The methods declared directly on WORequest allow you to extract information from a WORequest object. WORequest inherits a number of methods from WOMessage, however, that allow you to programmatically specify the contents of a request. In particular, the appendContent... and setContent: methods in the WOMessage class are designed to do this. For more information, see the WOMessage class specification.




Adopted Protocols


NSCopying
- copy
- copyWithZone:


Method Types


Working with cookies
- cookieValueForKey:
- cookieValues
- cookieValuesForKey:
Form values
- defaultFormValueEncoding
- formValueEncoding
- formValueForKey:
- formValueKeys
- formValues
- formValuesForKey:
- isFormValueEncodingDetectionEnabled
Request handling
- requestHandlerKey
- requestHandlerPath
- requestHandlerPathArray
Form Values
- setDefaultFormValueEncoding:
- setFormValueEncodingDetectionEnabled:
Obtaining attributes
- adaptorPrefix
- applicationName
- applicationNumber
- browserLanguages
- isFromClientComponent
- initWithMethod:uri:httpVersion:headers:content:userInfo:
- method
- sessionID
- uri


Instance Methods



adaptorPrefix

- (NSString *)adaptorPrefix

Returns the part of the request's URI that is specific to a particular adaptor. This is typically a URL ending in "/WebObjects", "/WebObjects.exe", "/WebObjects.dll", or uppercase versions of these strings. WebObjects uses a request's adaptor prefix to set the adaptor prefix in the generated response's URL. A WORequest must always have an adaptor prefix.

See Also: - applicationName, - applicationNumber, - uri



applicationName

- (NSString *)applicationName

Returns the part of the request's URI that identifies the application the request is intended for. This name does not include the ".woa" extension of an application directory. A WORequest must always have an application name specified.

See Also: - adaptorPrefix, - applicationNumber, - uri



applicationNumber

- (int)applicationNumber

Returns the part of the request's URI that identifies the particular application instance the request is intended for. This attribute is -1 if the request can be handled by any instance of the application, which is always the case for the first request in a session.

See Also: - applicationName, - uri



browserLanguages

- (NSArray *)browserLanguages

Returns the language preference list from the user's browser.

cookieValueForKey:

- (NSString *)cookieValueForKey:(NSString *)aKey

Returns a string value for the cookie key specified by aKey.

See Also: - cookieValues, - cookieValuesForKey:, WOCookie class specification



cookieValues

- (NSDictionary *)cookieValues

Returns a dictionary of cookie values and cookie keys.

See Also: - cookieValueForKey:, - cookieValuesForKey:, WOCookie class specification



cookieValuesForKey:

- (NSArray *)cookieValuesForKey:(NSString *)aKey

Returns an array of values for the cookie key specified by aKey. Use this method to retrieve information stored in a cookie in an HTTP header. Valid keys are specified in the cookie specification.

See Also: - cookieValueForKey:, - cookieValues, WOCookie class specification



defaultFormValueEncoding

- (NSStringEncoding)defaultFormValueEncoding

Returns the default string encoding the WORequest object uses for converting form values from ASCII to Unicode. It uses the default encoding only when it can detect no encoding from the ASCII form values or if encoding detection is disabled. If no default form-value encoding is set, NSISOLatin1StringEncoding is used.

See Also: - setDefaultFormValueEncoding:



formValueEncoding

- (NSStringEncoding)formValueEncoding

Returns the encoding last used to convert form values from ASCII to Unicode. This encoding is either the result of an earlier detection of form-value encoding or the default form value encoding.

See Also: - defaultFormValueEncoding, - isFormValueEncodingDetectionEnabled



formValueForKey:

- (id)formValueForKey:(NSString *)aKey

Returns a form value identified by the name aKey. If there are multiple form values identified by the same name, only one of the values is returned, and which of these values is not defined. You should use this method for names that you know occur only once in the name/value pairs of form data.

formValueKeys

- (NSArray *)formValueKeys

Returns an array of NSStrings corresponding to the names (or keys) used to access values of a form. The array is not sorted in any particular order, and is not necessarily sorted in the same order on successive invocations of this method.

formValues

- (NSDictionary *)formValues

Returns an NSDictionary containing all of the form data name/value pairs.

formValuesForKey:

- (NSArray *)formValuesForKey:(NSString *)aKey

Returns an array of all values (as NSStrings) of the form identified by the name aKey. This array is not sorted in any particular order, and is not necessarily sorted in the same order on successive invocations of this method. You should use this method when you know that a name (key) used for accessing form data can be matched with more than one value.

initWithMethod:uri:httpVersion:headers:content:userInfo:

- (id)initWithMethod:(NSString *)aMethod uri:(NSString *)aURL httpVersion:(NSString *)anHTTPVersion headers:(NSDictionary *)someHeaders content:(NSData *)aContent userInfo:(NSDictionary *)userInfo

Returns a WORequest object initialized with the specified parameters. The first two arguments are required:

If either argument is omitted, an exception is raised.

The remaining arguments are optional; if you specify nil for these, the designated initializer substitutes default values or initializes them to nil. The someHeaders argument (if not nil) should be a dictionary whose NSString keys correspond to header names and whose values are arrays of one or more strings corresponding to the values of each header. The userInfo dictionary can contain any information that the WORequest object wants to pass along to other objects involved in handling the request.

For more information on each argument, see the description of the corresponding accessor method.



isFormValueEncodingDetectionEnabled

- (BOOL)isFormValueEncodingDetectionEnabled

Returns whether detection of form-value encoding is allowed to take place when form values are obtained.

See Also: - setFormValueEncodingDetectionEnabled:



isFromClientComponent

- (BOOL)isFromClientComponent

Returns whether the request originated from an event in a client-side component (that is, a Java applet that can interact with the server side of a WebObjects application).

If you use dynamic elements and write write HTML code in the response, you should check that the request is not from a client-side component before writing into the response.



method

- (NSString *)method

Returns the method the WORequest object was initialized with. A WORequest's method defines where it will look for form values. The only currently supported methods are "GET" and "PUT", which have the same meaning as the HTTP request method tokens of the same name.

See Also: - content ( WOMessage class), - httpVersion ( WOMessage class)



requestHandlerKey

- (NSString *)requestHandlerKey

Returns the part of the request's URI which identifies the request handler. This identifies the request handle which will process the reuquest and cannot be nil

requestHandlerPath

- (NSString *)requestHandlerPath

Returns the part of the URL which identifies, for a given request handler, which information is requested. Different request handlers use this part of the URL in different ways.

requestHandlerPathArray

- (NSArray *)requestHandlerPathArray

Returns the request handler path decomposed into elements.

sessionID

- (NSString *)sessionID

Returns the session ID, or nil if no session ID is found. This method first looks for the session ID in the URL, then checks the form values, and finally checks to see if the session ID is stored in a cookie.

setDefaultFormValueEncoding:

- (void)setDefaultFormValueEncoding:(NSStringEncoding)anEncoding

Sets the default string encoding for the receiver to use when converting its form values from ASCII to Unicode. The default string encoding is called into play if the WORequest cannot detect an encoding from the ASCII form values or if encoding detection is disabled. If no default form value encoding is explicitly set, the WORequest uses NSISOLatin1StringEncoding.

See Also: - defaultFormValueEncoding, - setFormValueEncodingDetectionEnabled:



setFormValueEncodingDetectionEnabled:

- (void)setFormValueEncodingDetectionEnabled:(BOOL)flag

Enables or disables automatic detection of the best encoding for the receiver to use when it converts form values from ASCII to Unicode. When detection is enabled, a WORequest object scans the ASCII form values and applies heuristics to decide which is the best encoding to use. If no specific encoding is discernible, or if detection is disabled, the WORequest uses the default form value encoding for the conversion.

See Also: - isFormValueEncodingDetectionEnabled, - setDefaultFormValueEncoding:



uri

- (NSString *)uri

Returns the Uniform Resource Identifier (URI) the WORequest was initialized with. For a session's first request, the URI indicates the resource that the request is seeking (such as a WebObjects application); for subsequent requests in the session, the URI indicates which page of the application should handle the request. If the request was caused (as is usually the case) by a web browser submitting a URL to an HTTP server, the URI is that part of the URL that follows the port number. Because the format of WebObjects URLs and the corresponding request URI might change between different versions of WebObjects, you should not attempt to parse the URI returned by this method. Instead, use WORequest's accessor methods to access particular URI/URL components.

See Also: - adaptorPrefix, - applicationName, - applicationNumber




Table of Contents
Because WORequest objects usually correspond to HTTP requests, the data they encapsulate is almost the same as what you would find in an HTTP request. Thus an understanding of HTTP requests is important for understanding the data vended by WORequest objects. A recommended prerequisite therefore is to review the current HTTP specification or HTTP documentation.