android-网络编程2

1.乘法表.

 代码实现过程
 [1]搭建UI 

 [2]servlet代码
 
 
  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. //1.获取客户端提交的数据
  3. String name = request.getParameter("name");
  4. int number = Integer.parseInt(name);
  5. //2.根据name给客户端返回一个乘法表 通过response对象给客户端一个响应
  6. for (int i = 1; i <= number ; i++) {
  7. for (int j = 1; j <=i ; j++) {
  8. response.getWriter().write(i+"*"+j+"="+i*j +""); //1*1=1
  9. }
  10. response.getWriter().println();
  11. }
  12. }

2.文件上传案例

朋友圈 ,邮箱上传附件.百度云盘 360云盘. 
代码实现过程:
客户端要求:
[1]要求form表单必须有一个文件上传项
[2]请求的方式必须为post 因为get提交数据有大小的限制
[3]必须加上一个enctype =  multipart/form-data 否则请求体里面没有内容

服务器逻辑:
 
 
  1. @MultipartConfig
  2. @WebServlet("/fileUploadDemo")
  3. public class FileUPloadDemo extends HttpServlet {
  4. private static final long serialVersionUID = 1L;
  5. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  6. request.setCharacterEncoding("utf-8");
  7. //1.获取客户端上传的文件内容 根据name属性获取
  8. Part part = request.getPart("file"); //part对象里面封装了我们要上传的文件内容
  9. //2.把上传的内容 写到服务器目录下的一个文件里 首先获取fileupload真实路径
  10. String realPath = getServletContext().getRealPath("fileUpload");
  11. System.out.println("上传的路径:"+realPath);
  12. //3.获取客户端上传文件名 根据part对象获取头信息
  13. String header = part.getHeader("Content-Disposition");
  14. String[] split = header.split(";");
  15. String[] split2 = split[2].split("=");
  16. String fileName = split2[1].substring(1, split2[1].length()-1);
  17. //4.把part里面的内容写到服务器 的路径上
  18. part.write(realPath+"/"+fileName);
  19. }

3.登录案例

   代码实现过程
  [1]搭建服务器程序  服务器我们使用servlet模拟
  [2]搭建android客户端
 
 
  1. public void click1(View view) {
  2. new Thread(){
  3. @Override
  4. public void run() {
  5. try {
  6. //1.获取用户名和密码
  7. String name = et_name.getText().toString().trim();
  8. String pwd = et_pwd.getText().toString().trim();
  9. //1.1 定义要访问服务器路径 这个路径一定是我们服务器自己的路径
  10. String path = "http://192.168.126.62:8080/Login/LongServlet?name="+name+"&pwd="+pwd+"";
  11. //2.把name 和pwd提交到服务器
  12. URL url = new URL(path);
  13. //3.获取httpurlconnection对象
  14. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  15. //4.对coon进行配置
  16. conn.setConnectTimeout(5000); //设置连接 超时时间
  17. conn.setRequestMethod("GET"); //设置请求方式
  18. //5.获取服务器返回的状态码
  19. int code = conn.getResponseCode();
  20. if (code == 200){
  21. //6获取服务器返回的数据
  22. InputStream is = conn.getInputStream(); //服务器返回的数据是什么?
  23. //7把流里面的数据读取出来 .
  24. String content = StreamUtils.readStream(is);
  25. //8.更新UI
  26. showToast(content);
  27. }
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }.start();
  33. }
 [3]通过post方式提交数据  
     post是以请求体的形式提交数据 
 
 
  1. //点击按钮以post形式提交
  2. public void click2(View view) {
  3. new Thread(){
  4. @Override
  5. public void run() {
  6. try {
  7. //1.获取用户名和密码
  8. String name = et_name.getText().toString().trim();
  9. String pwd = et_pwd.getText().toString().trim();
  10. //1.0 定义请求体 格式通过抓包抓出来
  11. String data = "name="+name+"&pwd="+pwd+"";
  12. //1.1 定义要访问服务器路径 这个路径一定是我们服务器自己的路径 ☆☆☆路径不一样
  13. String path = "http://192.168.126.62:8080/Login/LongServlet";
  14. //2.把name 和pwd提交到服务器
  15. URL url = new URL(path);
  16. //3.获取httpurlconnection对象
  17. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  18. //4.对coon进行配置
  19. conn.setConnectTimeout(5000); //设置连接 超时时间
  20. conn.setRequestMethod("POST"); //设置请求方式 ☆☆☆请求的方式不一样
  21. //4.1 数据是以请求体的形式提交 所以要先封装请求体(已经封装好 ) 把请求体的内容写给服务器
  22. conn.setDoOutput(true); //允许conn对象向服务器写数据 ☆☆☆设置dooutput方法
  23. conn.getOutputStream().write(data.getBytes()); //☆☆☆通过字节流把数据写给服务器
  24. //5.获取服务器返回的状态码
  25. int code = conn.getResponseCode();
  26. if (code == 200){
  27. //6获取服务器返回的数据
  28. InputStream is = conn.getInputStream(); //服务器返回的数据是什么?
  29. //7把流里面的数据读取出来 .
  30. String content = StreamUtils.readStream(is);
  31. //8.更新UI
  32. showToast(content);
  33. }
  34. } catch (Exception e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. }.start();
  39. }

4.httpclient实现get和post提交 

   代码实现过程
   1.到包   compile 'com.loopj.android:android-async-http:1.4.9' 把这个包导入到build.gradle里
  2.httlclient实现get提交数据
 
 
  1. public void click1(View view) {
  2. new Thread(){
  3. @Override
  4. public void run() {
  5. try {
  6. //1.获取用户名和密码
  7. String name = et_name.getText().toString().trim();
  8. String pwd = et_pwd.getText().toString().trim();
  9. //1.1 定义要访问服务器路径 这个路径一定是我们服务器自己的路径
  10. String path = "http://192.168.126.62:8080/Login/LongServlet?name="+name+"&pwd="+pwd+"";
  11. //1.2 使用httpclient方式实现数据提交 //base simple ... defaule...
  12. HttpClient client = new DefaultHttpClient();
  13. //1.3 创建get对象 用来实现get请求
  14. HttpGet get = new HttpGet(path);
  15. //1.4 实现向服务器发送请求(get post)
  16. HttpResponse response = client.execute(get);
  17. //1.5 获取响应码 响应码 是在哪里:在响应行里
  18. int code = response.getStatusLine().getStatusCode();
  19. if (code == 200){
  20. //1.6 获取服务器返回的数据
  21. InputStream is = response.getEntity().getContent();
  22. //1.7 把流转换为String
  23. String content = StreamUtils.readStream(is);
  24. showToast(content);
  25. }
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. }.start();
  31. }
3.使用httpclient实现post提交
 
 
  1. public void click2(View view) {
  2. new Thread(){
  3. @Override
  4. public void run() {
  5. try {
  6. //1.获取用户名和密码
  7. String name = et_name.getText().toString().trim();
  8. String pwd = et_pwd.getText().toString().trim();
  9. //2.定义请求路径
  10. String path = "http://192.168.126.62:8080/Login/LongServlet";
  11. //3.创建httpclient实例
  12. HttpClient client = new DefaultHttpClient();
  13. //4.1创建一个httppost请求
  14. HttpPost post = new HttpPost(path);
  15. //4.2 创建parameters用来封装请求体的内容
  16. List<NameValuePair> parameters = new ArrayList<>();
  17. //4.3参数1 也和你服务器 request.getparameter参数对应
  18. BasicNameValuePair nameValuePair = new BasicNameValuePair("name",name);
  19. BasicNameValuePair pwdValuePair = new BasicNameValuePair("pwd",pwd);
  20. //4.4把nameValuePair 和 pwdValuePair 加入到集合
  21. parameters.add(nameValuePair);
  22. parameters.add(pwdValuePair);
  23. //4.5构造UrlEncodedFormEntity
  24. UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters);
  25. //4.6 封装请求体
  26. post.setEntity(entity);
  27. HttpResponse response = client.execute(post);
  28. //5.获取服务器返回状态码
  29. int code = response.getStatusLine().getStatusCode();
  30. if (code == 200){
  31. //6 获取服务器返回的数据
  32. InputStream is = response.getEntity().getContent();
  33. // 把流转换为String
  34. String content = StreamUtils.readStream(is);
  35. showToast(content);
  36. }
  37. } catch (Exception e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }.start();
  42. }

5.asynchttpclient

   get:提交代码
 
 
  1. AsyncHttpClient client = new AsyncHttpClient();
  2. //3.执行get请求
  3. client.get(path, new AsyncHttpResponseHandler() {
  4. //请求成功 // 登录成功
  5. @Override
  6. public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
  7. Toast.makeText(MainActivity3.this, new String(responseBody), Toast.LENGTH_SHORT).show();
  8. }
  9. //请求失败
  10. @Override
  11. public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
  12. }
  13. });
  post:提交代码实现
   



    
  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值