Download slides

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Generic Connection Framework
Connection
InputConnection
OutputConnection
StreamConnection
FileConnection
SocketConnection
HTTPConnection
Generic Connection Framework
Connection
InputConnection
void close()
OutputConnection
StreamConnection
FileConnection
SocketConnection
HTTPConnection
Generic Connection Framework
Connection
DIS openDataInputStream()
DIS openInputStream() InputConnection
void close()
DOS openDataOutputStream()
DOS openOutputStream()
OutputConnection
StreamConnection
FileConnection
SocketConnection
HTTPConnection
Generic Connection Framework
Connection
DIS openDataInputStream()
DIS openInputStream() InputConnection
void close()
DOS openDataOutputStream()
DOS openOutputStream()
OutputConnection
StreamConnection
FileConnection
SocketConnection
HTTPConnection
String getURL()
String getHost()
String getPort()
long getExpiration()
long getLastModified()
int getResponseCode()
HttpConnection API

API for processing the URL:
http://www.google.com/search?hl=en&q=java
http – protocol
www.google.com – server
search?hl=en&q=java – file
hl=en&q=java – query string
HttpConnection API

API for processing the URL:
String url = “http://www.google.com/search?hl=en&q=java”;
HttpConnection conn = (HttpConnection) Connector.open(url);
hc.getURL() -- “http://www.google.com/search?hl=en&q=java”;
hc.getProtocol() -– “http”
hc.getHost() –- “www.google.com”
hc.getPort() -- 80
hc.getFile() –- “search?hl=en&q=java”
hc.getQuery() – “hl=en&q=java”
HttpConnection API

Response Codes (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html )
Successful Request 2xx
•
200 OK (HTTP_OK)-- the request has succeeded
Client Error 4xx
•
403 Forbidden (HTTP_FORBIDDEN) -- server is refusing to fulfill
the request
•
404 Not Found (HTTP_NOT_FOUND)-- server has not found a matching
URI
Server Error 5xx
•
500 Internal Server Error (HTTP_INTERNAL_ERROR) -- unexpected
error on server
•
503 Service Unavailable (HTTP_UNAVAILABLE) -- server currently
unable to handle request due to temporary overloading or
maintenance
Telnet Demo
HttpConnection API
 Reading and image through Http connection
String url =
“http://www.cs.gettysburg.edu/~ilinkin/logo.gif”;
1. create a connection to the url
2. obtain a data input stream from the connection
3. check the length of the content
3.1 if length > 0:
read whole image at once
else:
read image in chunks until nothing read
4. close the connection
HTTP MIDlet
XML
EXtensible Markup Language

Markup language similar to HTML

Not a replacement for HTML

Designed to represent structured data

No predefined tags – you create your own

Simplifies data sharing and data transport
XML Example
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
XML Example

Representation of Book (http://www.w3schools.com/xml/xml_tree.asp)
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>

You decide on the tags <book>,

Tags must be nested properly

Tags are case sensitive
<title>, <author>, <year>,<price>
XML Example

Tags, attributes, values
<book category=“COOKING”>
<title lang=“en”>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category=“COOKING”>
• book – the tag
• category – attribute
• “COOKING” – value for attribute category
(can have multiple attributes per tag)
XML Example
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
(http://www.w3schools.com/xml/xml_tree.asp)
XML Parsing

SAX Parser (Simple Api for XML) (http://www.saxproject.org/)

SAX Parser is a “push parser”
runs through entire document and triggers events on tokens

Selected methods
void parse(InputSource is, DefaultHandler dh)
•
•
parses the input stream and notifies the handler when tokens are discovered
to handle tokens must create our own Handler class that extends DefaultHandl
XML Parsing

DefaultHandler – process tokens discovered by parser

Selected Methods
// implement to handle beginning and end of document
void startDocument()
void endDocument()
// override to handle discovery and end tags
void startElement(String uri, String localName, String qName,
Attributes attributes)
void endElement(String uri, String localName, String qName)
XML Parsing

Attributes class – retrieve information about the tag’s attributes

Can extract information based on attribute index or name

Selected methods
void getLength() – number of attributes
String getQName(int index) – get the attribute’s name by index
String getQValue(int index) – get attribute’s value by index
String getQValue(String qName) – get attribute’s value by its name
XML Parsing

Using the SAX Parser
HttpConnection hc = (HttpConnection) Connector.open(url);
DataInputStream is = conn.openDataInputStream();
DefaultHandler dh = new MyHandler();
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.parse(is, dh);
Parsing MIDlet
XML Parsing with KXML

KXML – lightweight parser (can use if phone does not support JSR 172)

Download and save in the lib/ folder
http://kxml.sourceforge.net/
XML Parsing with KXML

KXML – lightweight parser (can use if phone does not support JSR 172)

Download and save in the lib/ folder
http://kxml.sourceforge.net/

Selected methods
void getEventType() – any of START_DOCUMENT, START_TAG, END_TAG,
END_DOCUMENT, TEXT, COMMENT
String getName() – get the tag’s name
String getText() – get the text value of a tag
String getAttributeCount() – number of attributes for current tag
String getAttributeName(int i) – get i-th attribute’s name
String getAttributeValue(int i) – get i-th attribute’s value
XML Parsing with KXML

KXML – lightweight parser (can use if phone does not support JSR 172)

Download and save in the lib/ folder
http://kxml.sourceforge.net/

Selected methods
void getEventType() – any of START_DOCUMENT, START_TAG, END_TAG,
END_DOCUMENT, TEXT, COMMENT
String getName() – get the tag’s name
String getText() – get the text value of a tag
String getAttributeCount() – number of attributes for current tag
String getAttributeName(int i) – get i-th attribute’s name
String getAttributeValue(int i) – get i-th attribute’s value
XML Parsing with KXML
InputStream is = hc.openInputStream();
Reader reader = new InputStreamReader(is);
KXmlParser parser = new KXmlParser();
parser.setInput(reader);
parser.next()
while(parser.getEventType() != KXmlParser.END_DOCUMENT) {
if (parser.getEventType() == KXmlParser.START_TAG) {
}
else if (parser.getEventType() == KXmlParser.END_TAG) {
}
else if (parser.getEventType() == KXmlParser.TEXT) {
}
parser.next
}
Related documents