HttpUrlConnection使用Demo

因为经常用到 便写出来方边使用 直接复制本类即可

import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;

public class ConnectionUtil {
    /**
     * HttpUrlConnection
     * @param url
     * @return
     */
      public static String sendRequest(String url){
            InputStream is;
            try {
                URL newUrl = new URL(url);
                HttpURLConnection conn=(HttpURLConnection) newUrl.openConnection();
                //设置读去超时时间为10秒
                conn.setReadTimeout(10*1000);
                //设置链接超时为10秒
                conn.setConnectTimeout(15*1000);
                //设置请求方式,GET,POST
                conn.setRequestMethod("POST");
                //接受输入流
                conn.setDoInput(true);
                //启动输出流,当需要传递参数时需要开启
                conn.setDoOutput(true);
                //添加Header
                conn.setRequestProperty("Connection","Keep-Alive");
                //添加请求参数,注意:如果是GET请求,参数要写在URL中
                OutputStream output=conn.getOutputStream();
                BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(output,"UTF-8"));
                //写入参数 用&分割
                writer.write("demo=1");
                writer.flush();
                writer.close();
                //发起请求
                conn.connect();
                //状态码 
                //200 - 服务器成功返回网页 
                //404 - 请求的网页不存在 
                //503 - 服务不可用
                int code=conn.getResponseCode();
                if(code==200){
                    is=conn.getInputStream();     
                    //获取结果
                    String result=readInputStream(is);
                    return result;
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (ProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
        /** 
         * 把输入流的内容转化成字符串 
         * @param is 
         * @return 
         */  
        public static String readInputStream(InputStream is){  
            try {  
                ByteArrayOutputStream baos=new ByteArrayOutputStream();  
                int length=0;  
                byte[] buffer=new byte[1024];  
                while((length=is.read(buffer))!=-1){  
                    baos.write(buffer, 0, length);  
                }  
                is.close();  
                baos.close();  
                //或者用这种方法  
                //byte[] result=baos.toByteArray();  
                //return new String(result);  
                return baos.toString("UTF-8");  
            } catch (Exception e) {  
                e.printStackTrace();  
                return "获取失败";  
            }  
        }   
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏后台开发+音视频+ffmpeg

dpvs源码分析(续)

在上一篇https://cloud.tencent.com/developer/article/1180256?s=original-sharing,我们已经介...

4251
来自专栏杨建荣的学习笔记

最简单的web服务器实现(一)(r4笔记第68天)

tomcat作为web服务器,想必大家做过web开发的都离不开tomcat了,值得庆幸的是tomcat也是开放源代码的,最近准备好好琢磨琢磨tomcat的源码,...

3585
来自专栏用户2442861的专栏

java IO流之三 使用缓冲流来读写文件

http://blog.csdn.net/a107494639/article/details/7586689

1163
来自专栏青青天空树

趣味题:恺撒Caesar密码(c++实现)

描述:Julius Caesar 生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是Caesar 军团中的一名军官,需要把Ca...

702
来自专栏青玉伏案

设计模式(七): 通过转接头来观察"适配器模式"(Adapter Pattern)

在前面一篇博客中介绍了“命令模式”(Command Pattern),今天博客的主题是“适配器模式”(Adapter Pattern)。适配器模式用处还是比较多...

1958
来自专栏黑泽君的专栏

Java网络编程多线程改进上传文件

Java网络编程多线程改进上传文件   服务器的代码用线程进行封装(多线程),这样可以模拟一个同时接收多人上传文件的服务器。   (用循环也可以...

1042
来自专栏FreeBuf

scapy在wlan中的应用

Scapy 又是scapy,这是python的一个网络编程方面的库,它在wlan中也有很强大的应用。一般我们买块网卡,然后aircrack-ng套件爆破一下邻居...

32310
来自专栏马洪彪

Java服务器端生成报告文档:使用SQL Server Report Service(SSRS)

SQL Server Report Service(SSRS)提供了Asp.Net和WinForm两类客户端组件封装,因此使用C#实现SSRS报表的导出功能,仅...

3565
来自专栏DOTNET

ASP.NET MVC编程——单元测试

1自动化测试基本概念 自动化测试分为:单元测试,集成测试,验收测试。 单元测试 检验被测单元的功能,被测单元一般为低级别的组件,如一个类或类方法。 单元测试要满...

5035
来自专栏拂晓风起

java输出字符串到多个输出流 同时输出到console终端,网页,文本

1814

扫码关注云+社区