目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,HttpClient3.1是org.apache.commons.httpclient下操作远程url的工具包,虽然已不再更新,但实现工作中使用HttpClient3.1的代码还是很多,HttpClient4.5是org.apache.http。客户端下操作远程url的工具包,最新的;另一种则是通过HttpURLConnection去实现,HttpURLConnection是JAVA的标准类,是JAVA比较原生的一种实现方式。
自己在工作中三种方式都用到过,总结一下分享给大家,也方便自己以后使用,话不多说上代码。
第一种方式:java原生HttpURLConnection
包com.powerX.httpClient; 进口java.io.BufferedReader; 进口java.io.IOException; 进口java.io.InputStream; 进口java.io.InputStreamReader; 进口java.io.OutputStream; 进口java.net.HttpURLConnection; 进口java.net.MalformedURLException; 进口java.net.URL; 公开课HttpClient { 公共静态字符串doGet(字符串httpurl) { HttpURLConnection连接=零; InputStream是=零; BufferedReader br=零; 字符串的结果=零;//返回结果字符串 尝试{//创建远程url连接对象 网址URL=new URL (httpurl);//通过远程url连接对象打开一个连接,强转成httpURLConnection类 连接=(HttpURLConnection) url.openConnection ();//设置连接方式: connection.setRequestMethod(“获得”);//设置连接主机服务器的超时时间:15000毫秒 connection.setConnectTimeout (15000);//设置读取远程返回的数据时间:60000毫秒 connection.setReadTimeout (60000);//发送请求 connection.connect ();//通过连接连接,获取输入流 如果(connection.getResponseCode ()==200) { 是=connection.getInputStream ();//封装输入流,并指定字符集 br=new BufferedReader(新InputStreamReader (“utf - 8”));//存放数据 StringBuffer sbf=new StringBuffer (); 字符串temp=零; 在((temp=br.readLine ()) !=null) { sbf.append(临时); sbf.append (" \ r \ n "); } 结果=sbf.toString (); } }捕捉(MalformedURLException e) { e.printStackTrace (); }捕捉(IOException e) { e.printStackTrace (); 最后}{//关闭资源 如果(零!=br) { 尝试{ br.close (); }捕捉(IOException e) { e.printStackTrace (); } } 如果(零!=){ 尝试{ is.close (); }捕捉(IOException e) { e.printStackTrace (); } } connection.disconnect();//关闭远程连接 } 返回结果; } httpUrl公共静态字符串doPost(字符串,字符串参数){ HttpURLConnection连接=零; InputStream是=零; OutputStream os=零; BufferedReader br=零; 字符串的结果=零; 尝试{ 网址URL=new URL (httpUrl);//通过远程url连接对象打开连接 连接=(HttpURLConnection) url.openConnection ();//设置连接请求方式 connection.setRequestMethod(“文章”);//设置连接主机服务器超时时间:15000毫秒 connection.setConnectTimeout (15000);//设置读取主机服务器返回数据超时时间:60000毫秒 connection.setReadTimeout (60000);//默认值为:假的,当向远程服务器传送数据/写数据时,需要设置为真实的 connection.setDoOutput(真正的);//默认值为:真的,当前向远程服务读取数据时,设置为真,该参数可有可无 connection.setDoInput(真正的);//设置传入参数的格式:请求参数应该是name1=value1& name2=value2的形式。 连接。setRequestProperty(“内容类型”,“应用程序/x-www-form-urlencoded”);//设置鉴权信息:授权:无记名da3efcbf - 0845 - 4 - fe3 - 8 -阿坝ee040be542c0 连接。setRequestProperty(“授权”、“不记名da3efcbf - 0845 - 4 - fe3 - 8 -阿坝ee040be542c0”);//通过连接对象获取一个输出流 操作系统=connection.getOutputStream ();//通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的 os.write (param.getBytes ());//通过连接对象获取一个输入流,向远程读取 如果(connection.getResponseCode ()==200) { 是=connection.getInputStream ();//对输入流对象进行包装:字符集根据工作项目组的要求来设置 br=new BufferedReader(新InputStreamReader (“utf - 8”)); StringBuffer sbf=new StringBuffer (); 字符串temp=零;//循环遍历一行一行读取数据 在((temp=br.readLine ()) !=null) { sbf.append(临时); sbf.append (" \ r \ n "); } 结果=sbf.toString (); } }捕捉(MalformedURLException e) { e.printStackTrace (); }捕捉(IOException e) { e.printStackTrace (); 最后}{//关闭资源 如果(零!=br) { 尝试{ br.close (); }捕捉(IOException e) { e.printStackTrace (); } } 如果(零!=os) { 尝试{ os.close (); }捕捉(IOException e) { e.printStackTrace (); } } 如果(零!=){ 尝试{ is.close (); }捕捉(IOException e) { e.printStackTrace (); } }//断开与远程地址url的连接 connection.disconnect (); } 返回结果; } }详解java实现HTTP请求的三种方式