今天面试时,到上机部分,用到原始的http请求方式。一下懵逼了,以前在这块真没怎么涉及,除了学习时看过几遍。其他地方还真没怎么用到过。就算用到的也是一套封装好api。
好吧,回来有空了。重新看一遍,顺便写个dome。加深一下记忆,顺便整理一下,写个dome,方便以后再遇到,也可以直接拿来用不是?
1.先看一下Java原生http请求如何的
我们在游览器中访问需要一个url,然后enter后会返回一个html页面。
java中也需要这个,而且把它封装成一个URL对象。通过URL的openConnection(),打开一个URLConnection对象,其实只是一个虚拟的连接,并没有连通。这时我们可以通过返回的URLConnection这个对象来设置request的head信息,以及一些访问配置。当一切就绪后,再调用URLConnection的connect(),这时才会建立连接。连接之后调用URLConnection的getInputStream()就可以得到我们需要的html网页文件的流,之后如何处理全看业务了。
下面贴例子
      public static void main(String[] args) {
        BufferedReader bufferedReader = null;
        try {
            URL url = new URL("http://localhost:3000/wb/index.html");
            URLConnection urlConnection = url.openConnection();
            urlConnection.setConnectTimeout(3 * 1000);
            urlConnection.connect();
            
            bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            
            String line;
            while ((line = bufferedReader.readLine()) != null){
                System.out.println(new String(line.getBytes(),"utf-8"));
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (bufferedReader != null){
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
       上面几句话就完成一个http请求,当然实际情况不可能这么简单。
http常用的就是get和post,上面的例子只是一个get请求,参数直接放到url中便可。
post请求与get请求有点不同,就是建立连接的方式不同。上面有getInputStream(),自然而然会有getOutputStram(),他就是用来post请求的。
2.post请求只需要稍微改动上面的get代码
      public static void main(String[] args) {
        BufferedReader bufferedReader = null;
        PrintWriter out = null;
        try {
            URL url = new URL("http://www.baidu.com");
            URLConnection urlConnection = url.openConnection();
            urlConnection.setConnectTimeout(3 * 1000);
            
            urlConnection.setDoOutput(true);
            urlConnection.setDoInput(true);
            out = new PrintWriter(urlConnection.getOutputStream());
            
            out.print("key1=value1&key2=value2");
            
            out.flush();
            bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(new String(line.getBytes(), "utf-8"));
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
                if (out != null){
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
        
            
            
            
                尊重作者,转载请注明出处!
                
                    版权申明:本文版权归作者所有,未经授权,任何单位或个人不得以任何形式转载、摘编或利用其它方式使用本博客内容。作者保留追究相关法律责任的权利。如需使用博客内容,请与作者联系获得授权。感谢对本文的尊重与支持。
                
                
                    免责声明:本网站所载内容仅供参考,不构成任何专业建议。用户基于本网站内容作出的决策,风险自担。对于因使用本网站内容而产生的任何直接或间接损失,本网站不承担任何责任。请用户审慎判断,理性使用。