📄 networkquery.java
字号:
/* * Copyright (c) 2000-2001 Sun Microsystems, Inc. All Rights Reserved. */package examples.addressbook;import java.io.*;import java.util.*;import javax.microedition.rms.*;import javax.microedition.io.*;/* * Class to query a network service for address book entries * and parse the result. Uses HttpConnection to fetch * the entries from a server. * * The http request is made using a base url provided by the caller * with the query arguments for last name and first name * encoded in the query parameters of the URL. */public class NetworkQuery implements RecordEnumeration { private StringBuffer buffer = new StringBuffer(60); private String[] fields = new String[3]; private String empty = new String(); private Vector results = new Vector(20); private Enumeration resultsEnumeration; final static String baseurl = "http://127.0.0.1:8080/Book/netaddr"; /** * Create a RecordEnumeration from the network. * * Query a network service for addresses matching the * specified criteria. The base URL of the service * has the query parameters appended. The request is * made and the contents parsed into a Vector which * is used as the basis of the RecordEnumeration. * lastname the last name to search for * firstname the first name to search for * sortorder the order in which to sort * 1 is by last name, 0 is by first name */ NetworkQuery(String firstname, String lastname, int sortorder) { HttpConnection c = null; int ch; InputStream is = null; InputStreamReader reader; String url; // Format the complete URL to request buffer.setLength(0); buffer.append(baseurl); buffer.append("?last="); buffer.append((lastname != null) ? lastname : empty); buffer.append("&first="); buffer.append((firstname != null) ? firstname : empty); buffer.append("&sort=" + sortorder); url = buffer.toString(); // Open the connection to the service try { c = open(url); results.removeAllElements(); /* * Open the InputStream and construct a reader to * convert from bytes to chars. */ is = c.openInputStream(); reader = new InputStreamReader(is); while (true) { int i = 0; fields[0] = empty; fields[1] = empty; fields[2] = empty; do { buffer.setLength(0); while ((ch = reader.read()) != -1 && (ch != ',') && (ch != '\n')) { if (ch == '\r') { continue; } buffer.append((char)ch); } if (ch == -1) { throw new EOFException(); } if (buffer.length() > 0) { if (i < fields.length) { fields[i++] = buffer.toString(); } } } while (ch != '\n'); if (fields[0].length() > 0) { results.addElement( SimpleRecord.createRecord( fields[0], fields[1], fields[2])); } } } catch (Exception e) { } finally { try { if (is != null) { is.close(); } if (c != null) { c.close(); } } catch (Exception e) { } } resultsEnumeration = results.elements(); } /** * Read the HTTP headers and the data using HttpConnection. * Check the response code to ensure successful open. * * Connector.open is used to open url and a HttpConnection * is returned. * The HTTP headers are read and processed. * url the URL to open * throws IOException for any network related exception */ private HttpConnection open(String url) throws IOException { HttpConnection c; int status = -1; // Open the connection and check for redirects while (true) { c = (HttpConnection)Connector.open(url); // Get the status code, // causing the connection to be made status = c.getResponseCode(); if ((status == HttpConnection.HTTP_TEMP_REDIRECT) || (status == HttpConnection.HTTP_MOVED_TEMP) || (status == HttpConnection.HTTP_MOVED_PERM)) { // Get the new location and close the connection url = c.getHeaderField("location"); c.close(); } else { break; } } // Only HTTP_OK (200) means the content is returned. if (status != HttpConnection.HTTP_OK) { c.close(); throw new IOException("Response status not OK"); } return c; } /** * Returns true if more elements exist in enumeration. */ public boolean hasNextElement() { return resultsEnumeration.hasMoreElements(); } /** * Returns a copy of the next record in this enumeration, */ public byte[] nextRecord() { return (byte[])resultsEnumeration.nextElement(); } /** * The following are simply stubs that we don't * implement... */ public boolean hasPreviousElement() {return false;} public void destroy() {} public boolean isKeptUpdated() {return false;} public void keepUpdated(boolean b) {return;} public int nextRecordId() {return 0;} public int numRecords() {return 0;} public byte[] previousRecord() {return null;} public int previousRecordId() {return 0;} public void rebuild() {return;} public void reset() {return;}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -