⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpexample.java

📁 这是手机下载网络图像源码 共初学者参考
💻 JAVA
字号:
/* * @(#)HttpExample.java	1.2 03/01/22 * * Copyright (c) 1999-2003 Sun Microsystems, Inc. All rights reserved.  * PROPRIETARY/CONFIDENTIAL * Use is subject to license terms *//** * Examples using HttpConnection. */package example.http;import java.io.*;import javax.microedition.io.Connector;import javax.microedition.io.ContentConnection;import javax.microedition.io.StreamConnection;import javax.microedition.io.HttpConnection;import javax.microedition.lcdui.Gauge;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Display;import javax.microedition.midlet.*;/** * sample http example MIDlet. */public class HttpExample extends MIDlet implements Runnable {    /** example URL for HTTP GET */    String url = "http://www.yahoo.com/";    /** string buffer for assembling HTTP requests. */    StringBuffer buffer = new StringBuffer();    /** user interface component for displaying network progress. */    Gauge gauge;    /** user interface screen for displaying progress gauge. */    Form form;    /**     * Create the progress form and gauge.     * This program is not interactive, it will exit when done.     */    public HttpExample() {        gauge = new Gauge("Progress", false, 10, 0);        form = new Form("Progress");        form.append(gauge);                   Display.getDisplay(this).setCurrent(form);    }    /**     * Start a thread to run the examples.     */    public void startApp() {        new Thread(this).start();    }        /**     * Run the examples.     */    public void run() {;	try {            gauge.setLabel("Get using ContentConnection");            gauge.setValue(2);	    getViaContentConnection(url);            gauge.setLabel("Get using StreamConnection");            gauge.setValue(4);            getViaStreamConnection(url);            gauge.setLabel("Get using HttpConnection");            gauge.setValue(6);	    getViaHttpConnection(url);                        gauge.setLabel("Post using HttpConnection");            gauge.setValue(8);            postViaHttpConnection(url);	} catch (Exception e) {            System.out.println(e);            e.printStackTrace();        }        gauge.setValue(10);        notifyDestroyed();    }    /**     * Pause, discontinue with the http tests     */    public void pauseApp() {	    }    /**     * Destroy must cleanup everything.  The thread is signaled     * to stop and no result is produced.     * @param unconditional true if forced shutdown.     */    public void destroyApp(boolean unconditional) {    }    /**     * Simple read of a url using StreamConnection.     * No HTTP specific behavior is needed or used.     * <p>     * Connector.open is used to open url and a StreamConnection is returned.     * From the StreamConnection the InputStream is opened.     * It is used to read every character until end of file (-1).     * If an exception is thrown the connection and stream is closed.     * @param url the URL to process.     */    void getViaStreamConnection(String url) throws IOException {	StreamConnection c = null;	InputStream s = null;	try {	    c = (StreamConnection)Connector.open(url);	    s = c.openInputStream();            buffer.setLength(0);            int ch;	    while ((ch = s.read()) != -1) {		process((byte)ch);	    }	} finally {	    if (s != null) 		s.close();	    if (c != null)		c.close();	}    }	    /**     * Simple read of a url using ContentConnection.     * No HTTP specific behavior is needed or used.     * <p>     * Connector.open is used to open url and a ContentConnection is returned.     * The ContentConnection may be able to provide the length.     * If the length is available, it is used to read the data in bulk.     * From the StreamConnection the InputStream is opened.     * It is used to read every character until end of file (-1).     * If an exception is thrown the connection and stream is closed.     * @param url the URL to process.     */    void getViaContentConnection(String url) throws IOException {	ContentConnection c = null;	InputStream is = null;	try {	    c = (ContentConnection)Connector.open(url);            is = c.openInputStream();            buffer.setLength(0);            int len = (int)c.getLength();	    if (len > 0) {		byte[] data = new byte[len];		int actual = is.read(data);		process(data);	    } else {		int ch;		while ((ch = is.read()) != -1) {		    process((byte)ch);		}	    }	} finally {	    if (is != null)		is.close();	    if (c != null)		c.close();	}    }    /**     * Read the HTTP headers and the data using HttpConnection.     * Check the response code to insure successful retrieval.     * <p>     * Connector.open is used to open url and a HttpConnection is returned.     * The HTTP headers are read and processed.     * If the length is available, it is used to read the data in bulk.     * From the HttpConnection the InputStream is opened.     * It is used to read every character until end of file (-1).     * If an exception is thrown the connection and stream is closed.     * @param url the URL to process.     */    void getViaHttpConnection(String url) throws IOException {	HttpConnection c = null;	InputStream is = null;	OutputStream os = null;	try {	    int status = -1;	    // Open the connection and check for re-directs	    while (true) {		c = (HttpConnection)Connector.open(url);		setRequestHeaders(c);		// 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();		    System.out.println("Redirecting to " + url);		} else {		    break;		}	    }                        // Any 500 status number (500, 501) means there was a server error 	    if ((status == HttpConnection.HTTP_NOT_IMPLEMENTED) ||                (status == HttpConnection.HTTP_VERSION) ||                (status == HttpConnection.HTTP_INTERNAL_ERROR) ||                (status == HttpConnection.HTTP_GATEWAY_TIMEOUT) ||                (status == HttpConnection.HTTP_BAD_GATEWAY)) {                System.err.print("WARNING: Server error status ["+status+"] ");                System.err.println("returned for url ["+url+"]");                if (is != null)                    is.close();                if (os != null)                    os.close();                if (c != null)                    c.close();                return;            }            // Only HTTP_OK (200) means the content is returned.            if (status != HttpConnection.HTTP_OK) {                throw new IOException("Response status not OK ["+status+"]");            }	    // Get the ContentType	    String type = c.getType();	    processType(type);	    // open the InputStream 	    is = c.openInputStream();            buffer.setLength(0);            // Get the length and process the data	    int len = (int)c.getLength();	    if (len > 0) {		byte[] data = new byte[len];		int actual = is.read(data);		process(data);	    } else {		int ch;		while ((ch = is.read()) != -1) {		    process((byte)ch);		}	    }	} finally {	    if (is != null)		is.close();	    if (c != null)		c.close();	}    }    /**     * Add request properties for the configuration, profiles,     * and locale of this system.     * @param c current HttpConnection to apply request headers     */    void setRequestHeaders(HttpConnection c) throws IOException {        String conf = System.getProperty("microedition.configuration");        String prof = System.getProperty("microedition.profiles");	int space = prof.indexOf(' ');	if (space != -1) {	    prof = prof.substring(0, space -1);	}        String locale = System.getProperty("microedition.locale");        String ua = "Profile/" + prof +                " Configuration/" + conf;        c.setRequestProperty("User-Agent", ua);                if (locale != null) {            c.setRequestProperty("Content-Language", locale);        }    }    /**     * Post a request with some headers and content to the server and     * process the headers and content.     * <p>     * Connector.open is used to open url and a HttpConnection is returned.     * The request method is set to POST and request headers set.     * A simple command is written and flushed.     * The HTTP headers are read and processed.     * If the length is available, it is used to read the data in bulk.     * From the StreamConnection the InputStream is opened.     * It is used to read every character until end of file (-1).     * If an exception is thrown the connection and stream is closed.     * @param url the URL to process.     */    void postViaHttpConnection(String url) throws IOException {	int status = 0;	HttpConnection c = null;	InputStream is = null;	OutputStream os = null;	try {	    c = (HttpConnection)Connector.open(url);	    // Set the request method and headers	    c.setRequestMethod(HttpConnection.POST);	    c.setRequestProperty("If-Modified-Since",		"29 Oct 1999 19:43:31 GMT");	    c.setRequestProperty("User-Agent",		"Profile/MIDP-1.0 Configuration/CLDC-1.0");	    c.setRequestProperty("Content-Language", "en-US");	    // Getting the output stream may flush the headers	    os = c.openOutputStream();	    os.write("LIST games\n".getBytes());	    os.flush();		// Optional, openInputStream will flush	    // Get the status code, causing the connection to be made	    status = c.getResponseCode();            // Any 500 status number (500, 501) means there was a server error 	    if ((status == HttpConnection.HTTP_NOT_IMPLEMENTED) ||                (status == HttpConnection.HTTP_VERSION) ||                (status == HttpConnection.HTTP_INTERNAL_ERROR) ||                (status == HttpConnection.HTTP_GATEWAY_TIMEOUT) ||                (status == HttpConnection.HTTP_BAD_GATEWAY)) {                System.err.print("WARNING: Server error status ["+status+"] ");                System.err.println("returned for url ["+url+"]");                if (is != null)                    is.close();                if (os != null)                    os.close();                if (c != null)                    c.close();                return;            }                            // Only HTTP_OK (200) means the content is returned.            if (status != HttpConnection.HTTP_OK) {                		throw new IOException("Response status not OK ["+status+"]");	    }	    // Open the InputStream and get the ContentType	    is = c.openInputStream();	    String type = c.getType();	    processType(type);	    // Get the length and process the data	    int len = (int)c.getLength();	    if (len > 0) {		byte[] data = new byte[len];		int actual = is.read(data);		process(data);	    } else {		int ch;		while ((ch = is.read()) != -1) {		    process((byte)ch);		}	    }	} finally {	    if (is != null)		is.close();	    if (os != null)		os.close();	    if (c != null)		c.close();	}    }    /**     * Process the type.     * @param type that type     */    void processType(String type) {    }    /**     * Process the data one character at a time.     * @param b one byte of data     */    void process(byte b) {	buffer.append((char)b);    }    /**     * Process the data from the array.     * @param b  an array of bytes.     */    void process(byte[] b) {	for (int i = 0; i < b.length; i++) {	    process(b[i]);	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -