- From: Guido García Bernardo <ggarciab@itdeusto.com>
- Date: Mon, 03 Dec 2007 12:46:57 +0100
- To: public-mobileok-checker <public-mobileok-checker@w3.org>
Hello again :)
Links like :
<a href="mailto:myemail@host.com">
<a href="javascript:dosomething();">
<a href="skype:user?chat">
...
are followed because the method Preprocessor#hasSupportedProtocol
doesn't find the substring "://", so it thinks it is http.
For example, if you try it using
http://www2.paginasamarillas.es/sites/119/058/644/034/languages/ES/pda/home.html
you'll get this exception:
Exception in thread "main" java.lang.IllegalStateException: unsupported
protocol: 'javascript'
at
org.apache.commons.httpclient.protocol.Protocol.lazyRegisterProtocol(Protocol.java:149)
at
org.apache.commons.httpclient.protocol.Protocol.getProtocol(Protocol.java:117)
at org.apache.commons.httpclient.HttpHost.<init>(HttpHost.java:107)
at
org.apache.commons.httpclient.HttpMethodBase.setURI(HttpMethodBase.java:280)
at
org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
at
org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
at org.w3c.mwi.mobileok.basic.HTTPResource.<init>(HTTPResource.java:69)
at org.w3c.mwi.mobileok.basic.HTTPResource.<init>(HTTPResource.java:60)
at
org.w3c.mwi.mobileok.basic.HTTPTextResource.<init>(HTTPTextResource.java:37)
at
org.w3c.mwi.mobileok.basic.Preprocessor.preprocess(Preprocessor.java:108)
at
org.w3c.mwi.mobileok.basic.Tester.getPreprocessorResults(Tester.java:79)
at org.w3c.mwi.mobileok.basic.Tester.main(Tester.java:134)
This is the current code:
private static boolean hasSupportedProtocol(URI uri) {
final String uriString = uri.toString();
// Either no protocol (assume http), or http or https specified;
ignore anything else
return !uriString.contains("://") || uriString.startsWith("http://")
|| uriString.startsWith("https://");
}
I don't know what is the best way to solve it, maybe if we find ":"
without the two slashes, we should reject the URI. Another "uglier"
solution could be to catch the IllegalStateException
and continue.
Regards,
guido
Received on Monday, 3 December 2007 11:49:15 UTC