FileDocCategorySizeDatePackage
WebAddress.javaAPI DocAndroid 1.5 API4270Wed May 06 22:41:54 BST 2009android.net

WebAddress

public class WebAddress extends Object
{@hide} Web Address Parser This is called WebAddress, rather than URL or URI, because it attempts to parse the stuff that a user will actually type into a browser address widget. Unlike java.net.uri, this parser will not choke on URIs missing schemes. It will only throw a ParseException if the input is really hosed. If given an https scheme but no port, fills in port

Fields Summary
private static final String
LOGTAG
public String
mScheme
public String
mHost
public int
mPort
public String
mPath
public String
mAuthInfo
static final int
MATCH_GROUP_SCHEME
static final int
MATCH_GROUP_AUTHORITY
static final int
MATCH_GROUP_HOST
static final int
MATCH_GROUP_PORT
static final int
MATCH_GROUP_PATH
static Pattern
sAddressPattern
Constructors Summary
public WebAddress(String address)
parses given uriString.


        
         
        if (address == null) {
            throw new NullPointerException();
        }

        // android.util.Log.d(LOGTAG, "WebAddress: " + address);

        mScheme = "";
        mHost = "";
        mPort = -1;
        mPath = "/";
        mAuthInfo = "";

        Matcher m = sAddressPattern.matcher(address);
        String t;
        if (m.matches()) {
            t = m.group(MATCH_GROUP_SCHEME);
            if (t != null) mScheme = t;
            t = m.group(MATCH_GROUP_AUTHORITY);
            if (t != null) mAuthInfo = t;
            t = m.group(MATCH_GROUP_HOST);
            if (t != null) mHost = t;
            t = m.group(MATCH_GROUP_PORT);
            if (t != null) {
                try {
                    mPort = Integer.parseInt(t);
                } catch (NumberFormatException ex) {
                    throw new ParseException("Bad port");
                }
            }
            t = m.group(MATCH_GROUP_PATH);
            if (t != null && t.length() > 0) {
                /* handle busted myspace frontpage redirect with
                   missing initial "/" */
                if (t.charAt(0) == '/") {
                    mPath = t;
                } else {
                    mPath = "/" + t;
                }
            }

        } else {
            // nothing found... outa here
            throw new ParseException("Bad address");
        }

        /* Get port from scheme or scheme from port, if necessary and
           possible */
        if (mPort == 443 && mScheme.equals("")) {
            mScheme = "https";
        } else if (mPort == -1) {
            if (mScheme.equals("https"))
                mPort = 443;
            else
                mPort = 80; // default
        }
        if (mScheme.equals("")) mScheme = "http";
    
Methods Summary
public java.lang.StringtoString()

        String port = "";
        if ((mPort != 443 && mScheme.equals("https")) ||
            (mPort != 80 && mScheme.equals("http"))) {
            port = ":" + Integer.toString(mPort);
        }
        String authInfo = "";
        if (mAuthInfo.length() > 0) {
            authInfo = mAuthInfo + "@";
        }

        return mScheme + "://" + authInfo + mHost + port + mPath;