课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 直接从URL中读数据
  • 直接从URL中读数据

    发布:昆明Java培训      来源:达内新闻      时间:2016-05-05

  • 昆明java培训告诉大家一旦建立了URL对象,就能调用URL类的openStream()方法来得到一个字节输入流,通过它程序员能够很方便地读入该URL的内容。openStream()方法返回的是一个InputStream类型的对象。

    昆明java培训机构下面的例子能读入雅虎站点(www.yahoo.com)首页的内容(HTML形式的文本)并将其在本机的标准输出上显示。

    import java.net.*; import java.io.*; public class URLReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); BufferedReader in = new BufferedReader( new InputStreamReader( yahoo.openStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } }

    如果上述程序在设有防火墙的局域网内运行,可能会出错,运行时可使用下列命令行选项:

    java -Dhttp.proxyHost=proxyhost [-Dhttp.proxyPort=portNumber] URLReader

    与URL建立连接

    昆明java培训机构前面直接从URL得到输入流的方法只能用于读入URL的内容,如果既要读URL,又要往URL写,就必须先与指定的URL建立连接,再从连接中得到输入或输出流。

    直接从URL中读数据

    可使用URL类中的openConnection()的方法来建立连接。如:

    try { URL yahoo = new URL("http://www.yahoo.com/"); yahoo.openConnection(); } catch (MalformedURLException e) { // new URL() failed。。。。。} catch (IOException e) { // openConnection() failed。。。。。}

    一旦连接建立成功,就意味着你的Java程序与指定的URL之间建立起一条通信链路,openConnection()方法会返回一个URLConnection类型的对象。如果因为某些原因(如服务器关机)导致连接建立失败,该方法就会产生一个IOException。

    连接建立成功后,利用URLConnection对象的getInputStream()方法可得到相应的输入流,通过它可读入对应URL的内容。

    例:

    import java.net.*; import java.io.*; public class URLConnectionReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); URLConnection yc = yahoo.openConnection(); BufferedReader in = new BufferedReader( ew InputStreamReader( yc.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } }

    该程序的功能与上一个例子相同。对于读URL中的数据,可使用上述两种方法中的任一种,但后一种方法还能利用URLConnection对象进行其他操作,如往URL中写数据。

    对于大部分URL对象,其对应的文件是常规的HTML文本,这样的URL只能读不能写。但如果URL对应的是一个程序(如CGI程序、servlet程序等),情况就不一样了。

    我们知道,很多网页都包含表单(form),它能让用户在其中输入信息,通常在按了提交(submit)按钮后就将表单中的数据通过网络传给Web服务器上指定程序。该程序就会接收数据并对它进行处理,处理结果通常以HTML文本的形式返回。

    如果URL对应的是一个这种类型的程序,Java程序就可以向该URL写数据,其效果与使用表单向该URL对应的程序传送数据是一样的。表单传送数据的方式有POST方式和GET方式两种,GET方式用于传送少量数据,POST方式用于传送较多的数据,写URL对应于POST方式。

    通常昆明java培训机构老师写URL的步骤如下:

    构造指定的URL对象

    建立与该URL的连接

    将该连接设成是可写的

    通过已建立的连接获得针对该URL的输出流,输出流实际上是与URL所对应的CGI或servlet程序的标准输入相联系的。

    往输出流写数据

    关闭输出流

    假设Web服务器上有一个CGI程序,该程序能从它的标准输入读入一个字符串,将里面的字符颠倒后再将结果送往标准输出。设该程序要求的输入格式为:

    string = string_to_reverse // string_to_reverse为要颠倒的字符串。

    由于Form中的数据传给CGI程序前必须进行编码(由浏览器完成这项工作),该程序也调用了URLEncoder类的encode()方法来对要传送的数据进行编码。程序中URLConnection对象的setDoOutput(true)方法用来设置URL连接为可写的。

    形成天才的决定因素应该是勤奋。昆明java培训小编坚信有几分勤学苦练是成正比例的。

    推荐文章

上一篇:Java源码:URL编程

下一篇:URL在Java编程中的处理

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56