/** * This class is designed to be packaged with a COM DLL output format. * The class has no standard entry points, other than the constructor. * Public methods will be exposed as methods on the default COM interface. * @com.register ( clsid=600455A0-B534-11D3-A434-0080AD38C188, * typelib=600455A1-B534-11D3-A434-0080AD38C188 ) */ public class Class1 { // TODO: Add additional methods and code here
/** * NOTE: To add auto-registration code, refer to the documentation * on the following method * public static void onCOMRegister(boolean unRegister) {} */ } 首先要做的是更改类的名字,即把内容为“public class Class1”的行改为“public class FetchURL”。Java要求每一个类的名字与其对应的Java文件名完全相同(大小写敏感)。
public String Fetch(String strURL) FetchURL包含唯一的方法Fetch,它的参数是一个字符串,该字符串指向要求提取的HTML文档的URL。
String strInputLine = new String(); String strResponse = new String(); try { URL objURL = new URL(strURL); try { URLConnection objConnection = objURL.openConnection(); 变量strInputLine将作为程序从远程服务器读取数据的缓冲区,变量strResponse将保存目标页面的整个文档,Fetch方法最后返回的就是这个strResponse变量。在这几行代码中,程序创建了一个URL对象并尝试用该对象建立连接。这两行代码都封装在try...catch块内以处理任何可能出现的异常。Java利用“异常”来处理任何程序遇到的例外情况(通常是错误)。例如,如果传递给Fetch方法的URL参数格式错误,或程序运行时未能与指定服务器建立连接,都会引发异常,此时程序将把异常信息返回给调用Fetch方法的应用。异常处理代码见相应的catch关键字。
BufferedReader objInReader = new BufferedReader( new InputStreamReader( objConnection.getInputStream())); 这一行代码有点复杂,所以在完全搞懂它的意思之前先不要着急。在这行代码中,程序利用了象Java这样完全面向对象编程语言所提供的优势。首先,它用objConnection对象创建了一个InputStream类的对象,这实际上是一个可以从服务器读取数据的流;然后,又把这个InputStream类的对象传递给InputStreamReader,后者将负责从InputStream对象读取数据;最后,又用这个InputStreamReader类的对象创建BufferedReader类的对象,也就是objInReader。程序将利用这个objInReader对象完成实际的数据读取操作,并将结果保存为一个字符串。