WebAddresspublic 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.String | toString()
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;
|
|