Java Code Examples for javax.microedition.io.HttpConnection#getHeaderField()

The following examples show how to use javax.microedition.io.HttpConnection#getHeaderField() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BlackBerryImplementation.java    From CodenameOne with GNU General Public License v2.0 6 votes vote down vote up
/**
 * @inheritDoc
 */
public String[] getHeaderFields(String name, Object connection) throws IOException {
    HttpConnection c = (HttpConnection) connection;
    Vector r = new Vector();
    int i = 0;
    while (c.getHeaderFieldKey(i) != null) {
        if (c.getHeaderFieldKey(i).equalsIgnoreCase(name)) {
            String val = c.getHeaderField(i);
            r.addElement(val);
        }
        i++;
    }

    if (r.size() == 0) {
        return null;
    }
    String[] response = new String[r.size()];
    for (int iter = 0; iter < response.length; iter++) {
        response[iter] = (String) r.elementAt(iter);
    }
    return response;
}
 
Example 2
Source File: UpdateTask.java    From google-authenticator with Apache License 2.0 6 votes vote down vote up
private static String getEncoding(HttpConnection c) throws IOException {
  String enc = "ISO-8859-1";
  String contentType = c.getHeaderField("Content-Type");
  if (contentType != null) {
    String prefix = "charset=";
    int beginIndex = contentType.indexOf(prefix);
    if (beginIndex != -1) {
      beginIndex += prefix.length();
      int endIndex = contentType.indexOf(';', beginIndex);
      if (endIndex != -1) {
        enc = contentType.substring(beginIndex, endIndex);
      } else {
        enc = contentType.substring(beginIndex);
      }
    }
  }
  return enc.trim();
}
 
Example 3
Source File: Loader.java    From J2ME-Loader with Apache License 2.0 5 votes vote down vote up
/**
 * Open a HTTP stream and check its MIME type
 *
 * @param name Resource name
 * @return a http stream and checks the MIME type
 */
private InputStream getHttpInputStream(String name) throws IOException {
	InputConnection ic = (InputConnection) Connector.open(name);
	// Content-Type is available for http and https connections
	if (ic instanceof HttpConnection) {
		HttpConnection hc = (HttpConnection) ic;
		// Check MIME type
		String type = hc.getHeaderField("Content-Type");
		if (type != null &&
				!type.equals("application/m3g") &&
				!type.equals("image/png") &&
				!type.equals("image/jpeg")) {
			throw new IOException("Wrong MIME type: " + type + ".");
		}
	}

	InputStream is;
	try {
		is = ic.openInputStream();
	} finally {
		try {
			ic.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	return is;
}
 
Example 4
Source File: HttpClient.java    From pluotsorbet with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Read cookies from the HttpConnection and store them in the cookie jar.
 *
 * @param hcon HttpConnection object
 * @throws IOException
 */
private void readCookies(HttpConnection hcon) throws IOException {
    String headerName = hcon.getHeaderField(0);

    // Loop through the headers, filtering "Set-Cookie" headers
    for (int i = 0; headerName != null; i++) {
        headerName = hcon.getHeaderFieldKey(i);

        if (headerName != null && headerName.toLowerCase().equals("set-cookie")) {
            String cookieContent = hcon.getHeaderField(i);
            COOKIE_JAR.put(cookieContent);
        }
    }
}
 
Example 5
Source File: GameCanvasImplementation.java    From CodenameOne with GNU General Public License v2.0 4 votes vote down vote up
/**
 * @inheritDoc
 */
public String[] getHeaderFields(String name, Object connection) throws IOException {
    HttpConnection c = (HttpConnection)connection;
    Vector r = new Vector();
    int i = 0;
    while (c.getHeaderFieldKey(i) != null) {
        if (c.getHeaderFieldKey(i).equalsIgnoreCase(name)) {
            String val = c.getHeaderField(i);
            //some J2ME devices such as Nokia send all the cookies in one 
            //header spereated by commas
            if(name.equalsIgnoreCase("Set-Cookie")){
                //it is not possible to simply tokenize on comma, because 
                //the expiration date of each cookie contains a comma, therefore 
                //we temporary remove this comma tokenize all the cookies and then 
                //fixing the comma in the expiration date
                String cookies = "";
                Vector v = StringUtil.tokenizeString(val, ';');
                for (int j = 0; j < v.size(); j++) {
                    String keyval = (String) v.elementAt(j);
                    if(keyval.indexOf("expires") > -1){
                        keyval = StringUtil.replaceAll(keyval, ",", "@__@");
                    }
                    cookies += keyval + ";";
                }
                cookies = cookies.substring(0, cookies.length() - 1);
                
                if(cookies.indexOf(",") > -1){
                   Vector v2 = StringUtil.tokenizeString(cookies, ',');
                    for (int j = 0; j < v2.size(); j++) {
                        String value = (String) v2.elementAt(j);
                        value = StringUtil.replaceAll(value, "@__@", ",");
                        r.addElement(value);
                    }
                }
            }else{
                r.addElement(val);
            }
        }
        i++;
    }
    
    if(r.size() == 0) {
        return null;
    }
    String[] response = new String[r.size()];
    for(int iter = 0 ; iter < response.length ; iter++) {
        response[iter] = (String)r.elementAt(iter);
    }
    return response;
}
 
Example 6
Source File: UpdateTask.java    From google-authenticator with Apache License 2.0 4 votes vote down vote up
/**
 * {@inheritDoc}
 */
public void run() {
  try {
    // Visit the original download URL and read the JAD;
    // if the MIDlet-Version has changed, invoke the callback.
    String url = Build.DOWNLOAD_URL;
    String applicationVersion = getApplicationVersion();
    String userAgent = getUserAgent();
    String language = getLanguage();
    for (int redirectCount = 0; redirectCount < 10; redirectCount++) {
      HttpConnection c = null;
      InputStream s = null;
      try {
        c = connect(url);
        c.setRequestMethod(HttpConnection.GET);
        c.setRequestProperty("User-Agent", userAgent);
        c.setRequestProperty("Accept-Language", language);

        int responseCode = c.getResponseCode();
        if (responseCode == HttpConnection.HTTP_MOVED_PERM
            || responseCode == HttpConnection.HTTP_MOVED_TEMP) {
          String location = c.getHeaderField("Location");
          if (location != null) {
            url = location;
            continue;
          } else {
            throw new IOException("Location header missing");
          }
        } else if (responseCode != HttpConnection.HTTP_OK) {
          throw new IOException("Unexpected response code: " + responseCode);
        }
        s = c.openInputStream();
        String enc = getEncoding(c);
        Reader reader = new InputStreamReader(s, enc);
        final String version = getMIDletVersion(reader);
        if (version == null) {
          throw new IOException("MIDlet-Version not found");
        } else if (!version.equals(applicationVersion)) {
          Application application = Application.getApplication();
          application.invokeLater(new Runnable() {
            public void run() {
              mCallback.onUpdate(version);
            }
          });
        } else {
          // Already running latest version
        }
      } finally {
        if (s != null) {
          s.close();
        }
        if (c != null) {
          c.close();
        }
      }
    }
  } catch (Exception e) {
    System.out.println(e);
  }
}