JAVA中HTTP通信 以GET和POST方式向WEB服务器提交信息,并接收WEB服务器返回的响应

URL类

URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。
在java.net包中定义了URL类,该类用来处理有关URL的内容。对于URL类的创建和使用,下面分别进行介绍。
java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资
源。更多的资源我
这里写链接内容


URL的操作

在创建java.net URL的实例的时候,你能够利用许多公共构造器,从而让其变得更具灵活性。举个例子来说,这个class提供了一种使用完整URL信息串的构造器,一种使 用把URL信息串分解成为协议、主机名以及文件和资源的构造器,还有一种把URL信息串分解成为协议、主机名、端口号以及文件的构造器。我们首先使用完整 的URL来创建一个URL class的例子:

URL aURL = new URL(“http://www.mycompany.com”);

一旦你成功的创建了一个URL class的实例,你就可以对其进行操作了。但是在你能够访问这个URL上的资源和内容之前,你必须要打开到这些资源与内容上的连接。你可以通过使用openConnection来完成这一操作。

使用openConnection并不需要参数,并且在操作成功之后,它会返回一个URLConnection class的实例。在Listing A中,向我们演示了打开一个到URL连接的过程。一旦你的连接成功,你就可以开始对这个URLConnection的输入以及输出流进行读和写的操作了。

实例方法:

URL url = new URL(“http://www.sina.com.cn“);
URLConnection urlcon = url.openConnection();
InputStream is = urlcon.getInputStream();

编写一个java application应用程序,以GET和POST方式向WEB服务器提交信息,并接收WEB服务器返回的响应

import java.net.*;
import java.io.*;
public class Httpconnect{
    public static void main(String agrs[]){
        try{
            URL url=new URL("http://www.4399.com/");//创建一个URL类的实例,并指定网址
            URLConnection connection=url.openConnection();//创建实例连接指定URL上的内容
            InputStream is=connection.getInputStream();//获取内容的字节流
            InputStreamReader isr=new InputStreamReader(is,"utf-8");//将字节流包装为字符串流,并制定编码格式为utf-8
            BufferedReader in=new BufferedReader(isr);//创建一个实例用来存放转换后的字符
            String line;//定义一个字符串类型变量
            StringBuilder builder=new StringBuilder();//创建实例
            while((line = in.readLine()) != null){
                builder.append(line+"\n");//append方法使builder包含line中的所有信息
            }
            in.close();//关闭流
            isr.close();//关闭流
            is.close();//关闭流
            System.out.println(builder);//输出读取的信息
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }
}

结果
这里写图片描述
这里写图片描述

我们可以看出,4399中的链接和图片比较多

分析

import java.net.*;
import java.io.*;
public class Httpconnect{
    public static void main(String agrs[]){
        try{
            URL url=new URL("http://www.4399.com/");//创建一个URL类的实例,并指定网址
            URLConnection connection=url.openConnection();//创建实例连接指定URL上的内容
            InputStream is=connection.getInputStream();//获取内容的字节流
            InputStreamReader isr=new InputStreamReader(is,"utf-8");//将字节流包装为字符串流,并制定编码格式为utf-8
            BufferedReader in=new BufferedReader(isr);//创建一个实例用来存放转换后的字符
            String line;//定义一个字符串类型变量
            StringBuilder builder=new StringBuilder();//创建实例

主程序部分还是采用try catch 。这样结果严谨并且可以在程序可以运行下来的前提下报错。
第一步创建一个URL ,通俗点就是我们需要访问的服务器的地址,这里我选择的是4399小游戏网站。
第二步, URLConnection connection=url.openConnection();就是去创建我们去以何种方式去链接到URL的服务器上的。我们这里用了openConnection 这里你需要去加入他的包 也就是OpenConnection 类
第三步,创建一个字节流的输入 is
第四步,创建一个字符串流的输入的读取方式(reader),因为在这里不设置称为我们通常用的utf-8时,就会出现乱码的现象。
第五步,再次创建一个字符流isr,这样将其绑定在控制台上,它就可以读取字符流。
第六步,创建一个字符串变量line
第七步,这里我们将讲到两个概念。 StringBulider 和append
首先,String Bulider 是对字符串进行修改时的用法,append 是相对于字符串之间的相加,我们可以类似的看作是+的概念。

这部分代码最难的,就是去理解这部分为什么需要创建这么多个字节和字符流。
根据我自己的理解是,首先,我们需要创建一个字节流,就是将网站中的内容以字节流的形式将它输入进来,然后我们通过字节流到字符流的转换,并且去做出防止乱码的要求让它转化为字符流。最后利用缓冲区的In 将isr中的东西全部存储下来。
然后创建 line ,将in 的东西最终放在 Line 中判断,后再次放入到Builder 之中进行输出。
String Bulider
Append

由于我在JAVA文件的操作上的知识也是没有学的太好,我之后会继续加强的。这些部分是我借鉴我的团队队员的代码,作为哦小伙伴我也是很受用。确实人家的JAVA编写能力一直很好,我是借鉴,但是我也需要去好好学习,懂得每行代码的含义。
一下是他的链接,如果我的有什么不对,可以去参考和比较
朋友的CSDN

 while((line = in.readLine()) != null){
                builder.append(line+"\n");//append方法使builder包含line中的所有信息
            }
            in.close();//关闭流
            isr.close();//关闭流
            is.close();//关闭流
            System.out.println(builder);//输出读取的信息
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

这里用到了while 去判断,当line里面的东西我们读取出来不为空的时候,我们就将里面的东西 放入到字符流builder中,然后将他输出即可。不过这里我们都知道,需要把之前打开或者说是建立起来的字符和字节流关闭。
后面接着将catch 部分写完即可。


反思

这项任务,我学习了两天。我知道我的水平还是不太够,对于需要未能接触来到的JAVA领域的知识,我只是抱着去借鉴他人的代码,看他人的代码然后去模仿着去尝试着去写。但是我这样的学习在今后的编程和去真正的做到工程的项目中的话 我还差的很远。我也知道后面的任务会越做越难,但是虚心学习,脚踏实地才是学习的最好方式。

猜你喜欢

转载自blog.csdn.net/quyuquan2014/article/details/82625153