/*--------------------------------------------------
*
* Send client request (method, header, body)
* Get server response (status, header, body)
*
* Example from the book:     Core J2ME Technology
* Copyright John W. Muchow   http://www.CoreJ2ME.com
* You are free to use/modify this source code.
*-------------------------------------------------*/
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import java.io.*;

public class Conn2 extends MIDlet
{
  private String url = "http://localhost:8080/docuX.txt";
  public void startApp()
  {
    try{
      connect();
    }
    catch (Exception e)
    {
      System.out.println("*** Connecting error" + e.getMessage());
    }
  }
  private void connect() throws IOException
  {
    HttpConnection httpConn = null;
    InputStream iStrm = null;

    try
    {
      httpConn = (HttpConnection) Connector.open(url);
      httpConn.setRequestMethod(HttpConnection.GET);
      httpConn.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");

      System.out.println("url: " + url);
      System.out.println("-------------------------");

      System.out.println("Msg: " + httpConn.getResponseMessage());
      System.out.println("Code: " + httpConn.getResponseCode());

      if (httpConn.getResponseCode() == HttpConnection.HTTP_OK)
      {
        System.out.println("field 0: " + httpConn.getHeaderField(0));
        System.out.println("field 1: " + httpConn.getHeaderField(1));
        System.out.println("field 2: " + httpConn.getHeaderField(2));
        System.out.println("-------------------------");

        System.out.println("key 0: " + httpConn.getHeaderFieldKey(0));
        System.out.println("key 1 : " + httpConn.getHeaderFieldKey(1));
        System.out.println("key 2: " + httpConn.getHeaderFieldKey(2));
        System.out.println("-------------------------");

        System.out.println("content: " + httpConn.getHeaderField("content-type"));
        System.out.println("date: " + httpConn.getHeaderField("date"));
        System.out.println("last-modified: " + httpConn.getHeaderField("last-modified"));
        System.out.println("-------------------------");

        String str;
        iStrm = httpConn.openInputStream();
        int length = (int) httpConn.getLength();
        if (length != -1)
        {
          byte serverData[] = new byte[length];
          iStrm.read(serverData);
          str = new String(serverData);
        }
        else  // Length not available...
        {
          ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
          int ch;
          while ((ch = iStrm.read()) != -1)
            bStrm.write(ch);

          str = new String(bStrm.toByteArray());
          bStrm.close();
        }

        System.out.println("The content of the file:\n " + str);
        System.out.println("Host: " + httpConn.getHost());
        System.out.println("Port: " + httpConn.getPort());
        System.out.println("Type: " + httpConn.getType());
      }
    }
    finally
    {
      if (iStrm != null)
        iStrm.close();
      if (httpConn != null)
        httpConn.close();
    }
  }
  public void pauseApp()
  { }
  public void destroyApp(boolean unconditional)
  { }
}

