HttpUrlConnection网络连接
2015-08-12 20:37
405 查看
首先我们要了解的是HttpUrlConnection是由Sun公司封装好的网络连接,通过其中的Get和Post方法来获得客户端和服务器提供的数据。
我们要知道,获得数据的方法有两种,分别是doGet方法和doPost方法。首先我们要了解两种该方法的区别。
下面来总结一下通过Sun公司封装的HttpUrlConnection给服务器传送数据的步骤。
即:将要访问的服务器网址定义为一个字符串,并在字符串的最后加“?”然后加上要传入的数据。
生成URL 。
将定义的字符串生成一个URL类的对象。
打开URL连接 并将其强制造型成HttpUrlConnection类型的对象。
通过URL与服务器建立连接。并将连接强制转换为HttpUrlConnection类型。
设置请求方式。
设置请求方式为”GET“类型,
设置编码类型。
设置接受的数据类型。
设置可以接受的序列化的java对象。
设置超时时间
由于服务器响应时间可能过长,所以可以设置超时时间。
获取状态码。
如果状态码为200,则表明可以正常访问服务器。
获取读取的数据
整体的代码如下:
即:将要访问的服务器网址定义为一个字符串.
生成URL 。
将定义的字符串生成一个URL类的对象。
打开URL连接 并将其强制造型成HttpUrlConnection类型的对象。
通过URL与服务器建立连接。并将连接强制转换为HttpUrlConnection类型。
设置请求方式。
设置请求方式为”POST“类型,
设置编码类型。 设置接受的数据类型。
设置相关参数
设置可以读取服务器返回的内容。因为默认为true,因此可以不写。
设置客户端可以给用户提交数据。默认为false,
设置服务器不允许读缓存!
设置参数
提交数据getOutputStream().write(byte[] array);
设置超时时间
由于服务器响应时间可能过长,所以可以设置超时时间。
获取状态码。
如果状态码为200,则表明可以正常访问服务器。
获取读取的数据
整体的代码如下:
我们要知道,获得数据的方法有两种,分别是doGet方法和doPost方法。首先我们要了解两种该方法的区别。
Get方法
通过Get方法向服务器提供数据是将数据加在url后面的。提供数据的方式是显式的。Post方法
通过Post向服务器提供数据的方式是隐式的,将数据通过getOutputStream().write(byte[] array)的方法传送给服务器。
下面来总结一下通过Sun公司封装的HttpUrlConnection给服务器传送数据的步骤。
doGet
定义url字符串。即:将要访问的服务器网址定义为一个字符串,并在字符串的最后加“?”然后加上要传入的数据。
生成URL 。
将定义的字符串生成一个URL类的对象。
打开URL连接 并将其强制造型成HttpUrlConnection类型的对象。
通过URL与服务器建立连接。并将连接强制转换为HttpUrlConnection类型。
设置请求方式。
设置请求方式为”GET“类型,
设置编码类型。
设置接受的数据类型。
httpurlconn.setRequestProperty("Accept-Charset", "utf-8");
设置可以接受的序列化的java对象。
httpurlconn.setRequestProperty("Context-Type", "application/x-www-form-urlencoded");
设置超时时间
由于服务器响应时间可能过长,所以可以设置超时时间。
获取状态码。
如果状态码为200,则表明可以正常访问服务器。
获取读取的数据
整体的代码如下:
String urlString = "http://localhost:8080/MyServerletTest/MyServerletTest?username=xiaohua&password=12345"; try { //定义URL URL url = new URL(urlString); //打开URL连接 URLConnection conn = url.openConnection(); //强制转换为HTTPUrlConnection类型 HttpURLConnection httpurlconn = (HttpURLConnection) conn; //设置请求方式 httpurlconn.setRequestMethod("GET"); //设置连接超时时间 httpurlconn.setReadTimeout(3000); //设置编码格式 //设置接受的数据类型 httpurlconn.setRequestProperty("Accept-Charset", "utf-8"); //设置可以序列化的java对象 httpurlconn.setRequestProperty("Context-Type", "application/x-www-form-urlencoded"); int code = httpurlconn.getResponseCode(); System.out.println("获得的状态码是:"+code); if(code==HttpsURLConnection.HTTP_OK){ InputStream is = httpurlconn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = br.readLine(); while(line != null){ System.out.println(line); line = br.readLine(); } } } catch (MalformedURLException e1) { e1.printStackTrace(); } catch(SocketTimeoutException e2){ System.out.println("网络连接超时!请重新请求或者关闭!啊哈哈哈哈……"); }catch (IOException e3) { }
doPost
定义url字符串。即:将要访问的服务器网址定义为一个字符串.
生成URL 。
将定义的字符串生成一个URL类的对象。
打开URL连接 并将其强制造型成HttpUrlConnection类型的对象。
通过URL与服务器建立连接。并将连接强制转换为HttpUrlConnection类型。
设置请求方式。
设置请求方式为”POST“类型,
设置编码类型。 设置接受的数据类型。
httpurlconn.setRequestProperty("Accept-Charset", "utf-8");设置可以接受的序列化的java对象。
httpurlconn.setRequestProperty("Context-Type", "application/x-www-form-urlencoded");
设置相关参数
设置可以读取服务器返回的内容。因为默认为true,因此可以不写。
设置客户端可以给用户提交数据。默认为false,
setDoOutput(true);必须设置!!!!
设置服务器不允许读缓存!
setUseCaches(false);
设置参数
String param = “提交的数据内容”;
提交数据getOutputStream().write(byte[] array);
设置超时时间
由于服务器响应时间可能过长,所以可以设置超时时间。
获取状态码。
如果状态码为200,则表明可以正常访问服务器。
获取读取的数据
整体的代码如下:
String urlString = "http://localhost:8080/MyServerletTest/MyServerletTest"; try { URL url = new URL(urlString); HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection(); //设置请求方式 httpConnection.setRequestMethod("POST"); //设置超时时间 httpConnection.setReadTimeout(2000); //设置编码格式 //设置接受的数据类型 httpConnection.setRequestProperty("Accept-Charset", "utf-8"); //设置可以序列化的java对象 httpConnection.setRequestProperty("Context-Type", "application/x-www-form-urlencoded"); // 设置可以读取服务器返回的内容 //httpConnection.setDoInput(true); //设置服务器接收客户端串入的内容。 httpConnection.setDoOutput(true); //设置不可已接受缓存内容。 httpConnection.setUseCaches(false); //设置传入的参数内容 String params = "username=zhangsan&password=123456"; //提交数据 httpConnection.getOutputStream().write(params.getBytes()); int code = httpConnection.getResponseCode(); if(code==HttpURLConnection.HTTP_OK){ System.out.println("获得的连接状态码是:"+code); //从服务器读数据 InputStream is = httpConnection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = br.readLine(); while(line!=null){ System.out.println(line); line = br.readLine(); } } } catch (MalformedURLException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); }
相关文章推荐
- org.springframework.http.converter.HttpMessageNotWritableException:
- 基于JMF RTP的网络传输媒体流
- 2015/08/12/HTTPURL中GET和POST/HTTPClient中的GET和POST
- java Http编程小结
- 2015/08/12/HTTPURL中GET和POST/HTTPClient中的GET和POST
- twisted08-1 多级访问-httpserver
- HttpURLConnection和HttpClient的用法
- HTTPConnection与HTTPClient
- http://blog.sina.com.cn/s/blog_777a9ccb01013maj.html
- Java判断和检查网络
- TCP/IP网络编程 学习笔记_9 --域名系统(DNS)
- TCP/IP网络编程 学习笔记_9 --域名系统(DNS)
- 黑马程序员——java学习14(毕23-24)——网络编程
- http服务器交互get,put,post,delete等概念
- 网络篇----数据安全
- iOS安全系列之一:HTTPS
- Android网络取数据显示到ListView实例
- 卷积神经网络(CNN)笔记
- TCP/IP、Http、Socket的区别
- Http 异步批量下载图片之优化