public class JavaExplorer extends JFrame
{
private final class LoadUrlAction extends MouseAdapter
{
/**
* @param meta
* @return
*/
public String getCharsetName(String meta)
{
if (null == meta || meta.trim().length() == 0)
{
return "";
}
meta = meta.trim().toLowerCase();
int index = 0;
if ((index = meta.indexOf("charset")) < 0)
{
return "";
}
if (index >= 0)
{
while (index < meta.length())
{
if (meta.charAt(index) != '=')
{
index++;
}
else
{
index++;
break;
}
}
int endIndex = index;
while (endIndex < meta.length())
{
if (meta.charAt(endIndex) != ';' && meta.charAt(endIndex) != '\"' && meta.charAt(endIndex) != '\'')
{
endIndex++;
}
else
{
break;
}
}
return meta.substring(index, endIndex);
}
return "";
}
public void mousePressed(MouseEvent e)
{
try
{
URL url = new URL(JavaExplorer.this.urlTxt.getText());
BufferedInputStream receiver = new BufferedInputStream(url.openStream());
ByteArrayOutputStream _bodyByteBuffer = new ByteArrayOutputStream(4 * 1024);
byte[] buffer = new byte[1024];
int len = -1;
do
{
len = receiver.read(buffer);
if (len < 0)
{
break;
}
_bodyByteBuffer.write(buffer, 0, len);
}
while (len != 0);
String charsetName = getCharsetName(_bodyByteBuffer.toString());
String body;
if (charsetName.length() > 0)
{
body = _bodyByteBuffer.toString(charsetName);
}
else
{
// if we can't get the charset,let's use the the lastest
// charset.(usual default charset)
body = _bodyByteBuffer.toString();
}
JavaExplorer.this.content.setText(body);
JOptionPane.showMessageDialog(JavaExplorer.this, body);
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
}