HttpUrlConnection网络连接
来源:互联网 发布:美国读博士条件知乎 编辑:程序博客网 时间:2024/06/14 20:24
首先我们要了解的是HttpUrlConnection是由Sun公司封装好的网络连接,通过其中的Get和Post方法来获得客户端和服务器提供的数据。
我们要知道,获得数据的方法有两种,分别是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(); }
0 0
- HttpUrlConnection网络连接
- HttpUrlConnection 网络连接
- 网络连接+HttpUrlConnection+AsyncTask
- android 网络连接1:HttpURLConnection
- 网络连接——HttpURLConnection
- Android的网络连接HttpUrlConnection
- HttpURLConnection和HttpClient连接网络
- 再探网络连接--HttpURLConnection
- Android网络连接之HttpURLConnection和HttpClient
- HttpURLConnection时遇到网络连接失败
- android-HttpClient和HttpURLConnection判断网络连接
- Android网络连接之HttpURLConnection和HttpClient
- android HttpURLConnection 连接网络 读取返回数据
- Java网络连接之HttpURLConnection与HttpClient
- Android网络连接之HttpURLConnection和HttpClient
- Android网络连接之HttpURLConnection和HttpClient
- Android网络连接之HttpURLConnection和HttpClient
- Android网络连接之HttpURLConnection和HttpClient
- readline函数实现源码
- BZOJ 题目1016: [JSOI2008]最小生成树计数(Kruskal+Matrix_Tree)
- jquery 选择器的一些小操作
- Codeforces Round #315 (Div. 1) B. Symmetric and Transitive(Bell数的应用)(好题)
- 【DP】poj2486
- HttpUrlConnection网络连接
- 线程与进程的区别
- ios中的UIAutomation脚本的录制
- Java ImageIcon 不能显示问题
- hdu5354 Bipartite Graph
- Java从键盘输入值
- Android之——JNI与C语言常见术语
- 并发与并行以及抽象的重要性
- pojThe xor-longest Path(trie树)