|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
The ClientSession
interface provides methods for OBEX requests.
This interface provides a way to define headers for any OBEX operation.
OBEX operations are CONNECT, SETPATH, PUT, GET and DISCONNECT. For PUTs and
GETs, this interface will return a javax.obex.Operation
object
to complete the operations. For CONNECT, DISCONNECT, and SETPATH operations,
this interface will complete the operation and return the result in a
HeaderSet
object.
Connection ID and Target Headers
According to the IrOBEX specification, a packet may not contain a Connection
ID and Target header. Since the Connection ID header is managed by the
implementation, it will not send a Connection ID header if a Connection ID
was specified in a packet that has a Target header. In other words, if an
application adds a Target header to a HeaderSet
object used
in an OBEX operation and a Connection ID was specified, no Connection ID
will be sent in the packet containing the Target header.
CREATE-EMPTY and PUT-DELETE Requests
To perform a CREATE-EMPTY request, the client must call the
put()
method. With the Operation
object returned,
the client must open the output stream by calling
openOutputStream()
and then close the stream by calling
close()
on the OutputStream
without writing
any data. Using the DataOutputStream
returned from
openDataOutputStream()
works the same way.
There are two ways to perform a PUT-DELETE request. The
delete()
method is one way to perform a PUT-DELETE request.
The second way to perform a PUT-DELETE request is by calling
put()
and never calling openOutputStream()
or
openDataOutputStream()
on the Operation
object
returned from put()
.
PUT example
void putObjectViaOBEX(ClientSession conn, HeaderSet head, byte[] obj) throws IOException { // Include the length header head.setHeader(HeaderSet.LENGTH, new Long(obj.length)); // Initiate the PUT request Operation op = conn.put(head); // Open the output stream to put the object to it OutputStream out = op.openOutputStream(); // Send the object to the server out.write(obj); // End the transaction out.close(); op.close(); }
GET example
byte[] getObjectViaOBEX(ClientSession conn, HeaderSet head) throws IOException { // Send the initial GET request to the server Operation op = conn.get(head); // Get the object from the input stream InputStream in = op.openInputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); int data = in.read(); while (data != -1) { out.write((byte)data); data = in.read(); } // End the transaction in.close(); op.close(); byte[] obj = out.toByteArray(); out.close(); return obj; }
Method Summary | |
HeaderSet |
connect(HeaderSet headers)
Completes an OBEX CONNECT operation. |
HeaderSet |
createHeaderSet()
Creates a javax.obex.HeaderSet object. |
HeaderSet |
delete(HeaderSet headers)
Performs an OBEX DELETE operation. |
HeaderSet |
disconnect(HeaderSet headers)
Completes an OBEX DISCONNECT operation. |
Operation |
get(HeaderSet headers)
Performs an OBEX GET operation. |
long |
getConnectionID()
Retrieves the connection ID that is being used in the present connection. |
Operation |
put(HeaderSet headers)
Performs an OBEX PUT operation. |
void |
setAuthenticator(Authenticator auth)
Sets the Authenticator to use with this connection. |
void |
setConnectionID(long id)
Sets the connection ID header to include in the request packets. |
HeaderSet |
setPath(HeaderSet headers,
boolean backup,
boolean create)
Completes an OBEX SETPATH operation. |
Methods inherited from interface javax.microedition.io.Connection |
close |
Method Detail |
public void setAuthenticator(Authenticator auth)
Authenticator
to use with this connection. The
Authenticator
allows an application to respond to
authentication challenge and authentication response headers. If no
Authenticator
is set, the
response to an authentication challenge or authentication response
header is implementation dependent.auth
- the Authenticator
to use for this connectionauth
is null
public HeaderSet createHeaderSet()
javax.obex.HeaderSet
object. This object
can be used to define header values in a request.javax.obex.HeaderSet
objectHeaderSet
public void setConnectionID(long id)
id
- the connection ID to useid
is not in the
range 0 to 232-1public long getConnectionID()
public HeaderSet connect(HeaderSet headers) throws java.io.IOException
headers
argument is null
, no headers will be sent in the request.
This method will never return null
.
This method must be called and a successful response code of
OBEX_HTTP_OK
must be received before put()
,
get()
, setPath()
, delete()
, or
disconnect()
may be called. Similarly, after a successful
call to disconnect()
, this method must be called before
calling put()
, get()
, setPath()
,
delete()
, or disconnect()
.
headers
- the headers to send in the CONNECT requestOBEX_HTTP_OK
and
calls to disconnect()
have not returned a response code
of OBEX_HTTP_OK
; if the
headers defined in headers
exceed the max packet lengthheaders
was not
created by a call to createHeaderSet()
public HeaderSet disconnect(HeaderSet headers) throws java.io.IOException
headers
argument is null
, no headers will be sent in the request.
This method will end the session. A new session may be started by
calling connect()
. This method will never return
null
.headers
- the header to send in the DISCONNECT requestconnect()
has not been called; if
disconnect()
has been called and received a response code
of OBEX_HTTP_OK
after the last call to
connect()
; if the headers defined in headers
exceed the max packet lengthheaders
were not
created by a call to createHeaderSet()
public HeaderSet setPath(HeaderSet headers, boolean backup, boolean create) throws java.io.IOException
null
.backup
- if true
, instructs the server to back up one
directory before moving to the directory specified in name (similar to
cd .. on PCs); if false
, apply name
to the
current directorycreate
- if true
, instructs the server to create the
directory if it does not exist; if false
, instruct the server
to return an error code if the directory does not existheaders
- the headers to include in the SETPATH requestconnect()
has not been called; if
disconnect()
had been called and a response code of
OBEX_HTTP_OK
was received; if the headers defined in
headers
exceed the max packet lengthheaders
were not
created by a call to createHeaderSet()
public HeaderSet delete(HeaderSet headers) throws java.io.IOException
null
.headers
- the header to send in the DELETE requestconnect()
has not been called; if
disconnect()
had been called and a response code of
OBEX_HTTP_OK
was received; if the headers defined in
headers
exceed the max packet lengthheaders
were not
created by a call to createHeaderSet()
public Operation get(HeaderSet headers) throws java.io.IOException
Operation
object to
continue with the operation. This method will never return
null
.headers
- the OBEX headers to send as part of the initial GET
requestconnect()
has not been called; if
disconnect()
had been called and a response code of
OBEX_HTTP_OK
was received; if connect()
has not
been called; if the client is already in an operation;headers
were not
created by a call to createHeaderSet()
Operation
public Operation put(HeaderSet headers) throws java.io.IOException
Operation
object to
continue with the PUT operation. This method will never return
null
.headers
- the OBEX headers to send in the initial PUT requestconnect()
has not been called; if
disconnect()
had been called and a response code of
OBEX_HTTP_OK
was received; if connect()
has not
been called; if the client is already in an operation;headers
were not
created by a call to createHeaderSet()
Operation
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |