详解java实现HTTP请求的三种方式

  

目前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请求的三种方式