开发者社区> 极客峰> 正文

Android 通过Get/Post提交请求数据到服务器

简介:
+关注继续查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.lifengfeng.submitdata.utils;
 
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
 
import android.util.Log;
 
public class NetUtils {
 
    private static final String TAG = "NetUtils";
     
    /**
     * 使用post的方式登录
     * @param userName
     * @param password
     * @return
     */
    public static String loginOfPost(String userName, String password) {
        HttpURLConnection conn = null;
        try {
            URL url = new URL("http://10.0.2.2:8080/Server/servlet/LoginServlet");
             
            conn = (HttpURLConnection) url.openConnection();
             
            conn.setRequestMethod("POST");
            conn.setConnectTimeout(10000); // 连接的超时时间
            conn.setReadTimeout(5000); // 读数据的超时时间
            conn.setDoOutput(true); // 必须设置此方法, 允许输出
//          conn.setRequestProperty("Content-Length", 234);     // 设置请求头消息, 可以设置多个
             
            // post请求的参数
            String data = "username=" + userName + "&password=" + password;
             
            // 获得一个输出流, 用于向服务器写数据, 默认情况下, 系统不允许向服务器输出内容
            OutputStream out = conn.getOutputStream(); 
            out.write(data.getBytes());
            out.flush();
            out.close();
             
            int responseCode = conn.getResponseCode();
            if(responseCode == 200) {
                InputStream is = conn.getInputStream();
                String state = getStringFromInputStream(is);
                return state;
            } else {
                Log.i(TAG, "访问失败: " + responseCode);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(conn != null) {
                conn.disconnect();
            }
        }
        return null;
    }
 
    /**
     * 使用get的方式登录
     * @param userName
     * @param password
     * @return 登录的状态
     */
    public static String loginOfGet(String userName, String password) {
        HttpURLConnection conn = null;
        try {
            String data = "username=" + URLEncoder.encode(userName) + "&password=" + URLEncoder.encode(password);
            URL url = new URL("http://10.0.2.2:8080/Server/servlet/LoginServlet?" + data);
            conn = (HttpURLConnection) url.openConnection();
             
            conn.setRequestMethod("GET");       // get或者post必须得全大写
            conn.setConnectTimeout(10000); // 连接的超时时间
            conn.setReadTimeout(5000); // 读数据的超时时间
             
            int responseCode = conn.getResponseCode();
            if(responseCode == 200) {
                InputStream is = conn.getInputStream();
                String state = getStringFromInputStream(is);
                return state;
            } else {
                Log.i(TAG, "访问失败: " + responseCode);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(conn != null) {
                conn.disconnect();      // 关闭连接
            }
        }
        return null;
    }
     
    /**
     * 根据流返回一个字符串信息
     * @param is
     * @return
     * @throws IOException
     */
    private static String getStringFromInputStream(InputStream is) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = -1;
         
        while((len = is.read(buffer)) != -1) {
            baos.write(buffer, 0, len);
        }
        is.close();
         
        String html = baos.toString();  // 把流中的数据转换成字符串, 采用的编码是: utf-8
         
//      String html = new String(baos.toByteArray(), "GBK");
         
        baos.close();
        return html;
    }
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android Studio 通过一个登录功能介绍SQLite数据库的使用
前言:         SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
4305 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 30 章 可靠性和预写式日志_30.3. 异步提交
30.3. 异步提交 异步提交是一个允许事务能更快完成的选项,代价是在数据库崩溃时最近的事务会丢失。在很多应用中这是一个可接受的交换。 如前一节所述,事务提交通常是同步的:服务器等到事务的WAL记录被刷写到持久存储之后才向客户端返回成功指示。
855 0
通过Android逆向之签名算法分析看apk安全防护
android安全问题日益验证,作为一名移动安全渗透人员,有时需要对移动apk进行全面的渗透测试,而不能仅仅局限于apk本身,此时往往就需要结合静态分析和动态分析进行。
1676 0
通过Postman实现专有云云解析API网关的请求签名与调试
本文主要使用Postman调试API网关的方法,文中使用Pre-request Script实现了阿里专有云云解析API网关的签名算法。
477 0
Android中POST请求代码
public static String getDataByPost(String APIUrl,Map paramsHashMap){ String result=null; try { HttpPost httpPost = n...
510 0
Android手机访问web服务器(post请求)
一:客户端—服务器连接操作类(HttpUtil) package com.example.userdatatoweb; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import
1468 0
curl之post提交xml
直接上代码: 1 /** 2 * 以post方式提交xml到对应的接口url 3 * 4 * @param string $xml 需要post的xml数据 5 * @param string $url url 6 ...
950 0
+关注
极客峰
开源中国热门博主,曾位列热门博主排行榜第二名(第一为其官方帐号),一个注重细节的技术狂,同时擅长Android、iOS、PHP开发,喜欢钻研新技术。我的微信公众账号:极客峰
109
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载