Http编程
来源:互联网 发布:sony系统下载软件 编辑:程序博客网 时间:2024/05/17 21:41
1 Http编程
】HttpURLConnection(api提供)
】HttpClient
HttpURLConnecdtion使用步骤
a 确定资源地址
String path=”http://localhost:8080/web01/a.bmp”;
b 把地址封装成URL(统一资源定位符)
URL url=new URL(path);
c 创建程序与资源的连接
HttpURLConnection con=(HttpURLConnection) url.openConnection();
d 设置请求方式get、post
con.setRequestMethod(“GET”);
e 设置输入,输出操作
con.setDoInput(true);
f 打开连接
con.connect();
g 根据返回的状态码,进行读写操纵(200表示成功)
if(con.getResponseCode()==200){//状态码200代表访问成功
//获取返回的资源流
InputStream in=con.getInputStream();
//读取操作 byte[] b=new byte[100]; int len=0; while((len=in.read(b))!=-1){ }
附: con.getContentLength()//获取数据字节长度,可用于带进度条的下载操作
2 get和post请求都可以请求数据和发送数据,
】发送数据时最好用post方式,因为post方式将数据封装成流发送给服务器,比较安全
】get方式请求时,输入的参数会在url上以键值对的形式展现出来,不安全,而且大小有限制(假如输入账号 密码进行请求服务器的数据,密码就会被显示到url上)
】HttpURLConnection get方式
package com.kk;import java.io.BufferedInputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class GetImage { public static void main(String[] args) { try { //资源地址 String path="http://localhost:8080/web01/a.bmp"; //设置URL URL url=new URL(path); //创建与资源的连接 HttpURLConnection con=(HttpURLConnection) url.openConnection(); //设置请求方式 con.setRequestMethod("GET"); //设置输入操作 con.setDoInput(true); //打开连接 con.connect(); if(con.getResponseCode()==200){//状态码200代表访问成功 //获取返回的资源流 InputStream in= con.getInputStream(); FileOutputStream out=new FileOutputStream(new File("c:/my.bmp")); //读取操作 byte[] b=new byte[100]; int len=0; while((len=in.read(b))!=-1){ //写到文件中 out.write(b,0,len); } } } catch (Exception e) { System.out.println("又一场"); e.printStackTrace(); } }}**post 发送数据**
public class Post {
public static void main(String[] args) { String path="http://localhost:8080/web01/a.bmp"; String data="userName=kkk&password=123456"; try { URL url=new URL(path); //与服务器建立连接 HttpURLConnection con=(HttpURLConnection) url.openConnection(); //设置请求方式 con.setRequestMethod("POST"); //设置输入输出操作 con.setDoInput(true); con.setDoOutput(true); con.connection(); //得到输出流 OutputStream out=con.getOutputStream(); //向服务器发送数据 out.write(data.getBytes()); } catch (Exception e) { e.printStackTrace(); }}
}
】HttpClient get方式
package httpclient;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;public class Main { public static void main(String[] args) { String path="http://localhost:8080/web01/a.bmp"; //创建客户端 HttpClient client=new DefaultHttpClient(); //设置get请求 HttpGet get=new HttpGet(path); //请求数据,得到响应 try { HttpResponse response=client.execute(get); //判断返回码 if(response.getStatusLine().getStatusCode()==200){ //获取数据实体(图片、xml、json、String等) //获取数据第一中方式 EntityUtils.toByteArray(response.getEntity()); //获取数据第二种方式 HttpEntity entity=response.getEntity(); InputStream in =entity.getContent(); OutputStream out=new FileOutputStream(new File("c:/kk.png")); byte b[]=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ out.write(b,0,len); } in.close(); out.close(); } } catch (Exception e) { e.printStackTrace(); } }}
】HttpClient post方式
package com.qf.httpclient;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;//使用httpPost,上传数据进行登录验证public class Demo03 { public static void main(String[] args) { String path = "http://localhost:8080/day27/LoginServlet"; HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(path); try { // 发送数据,以实体的形式发送数据 // 创建名值对 NameValuePair p1 = new BasicNameValuePair("username", "admin"); NameValuePair p2 = new BasicNameValuePair("password", "123456"); // 创建集合,存储名值对 List<NameValuePair> list = new ArrayList<NameValuePair>(); list.add(p1); list.add(p2); // 创建实体,封装名值对的集合 HttpEntity entity = new UrlEncodedFormEntity(list); // 给post请求设置实体,实体封装了发送的数据 post.setEntity(entity); HttpResponse res = client.execute(post); if (res.getStatusLine().getStatusCode() == 200) { System.out.println(EntityUtils.toString(res.getEntity())); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
- http编程
- Http编程
- http编程
- http编程、socket编程
- HTTP协议以及HTTP编程
- HTTP 编程好书
- Windows mobile http编程
- C# HTTP编程
- HTTP协议编程 C#
- Windows mobile http编程
- Symbian http 编程总结
- MFC 与 HTTP编程
- MFC 与 HTTP编程
- HTTP编程好书
- QT网络编程-http
- IOS网络编程:HTTP
- IOS网络编程:HTTP
- 面向HTTP协议编程
- 向maven仓库中添加,oracle jdbc驱动问题
- KMP算法详解
- 个人总结-java设计模式-装饰者模式
- Entity Framework 4.1学习教程
- EXP/IMP】EXP/IMP过程中的字符集问题
- Http编程
- META-INF和WEB-INF
- 前端不为人知的一面–前端冷知识集锦
- 一个简单的poster样式
- jquery stop()方法
- iOS调用程序外地图导航
- Eclipse 项目以非gradle方式导入Android Studio
- cocos2d-x 3.x的底层渲染机制
- html5 video标签全屏