天天看点

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

<code>package</code> <code>com.lifengfeng.submitdata.utils;</code>

<code>import</code> <code>java.io.bytearrayoutputstream;</code>

<code>import</code> <code>java.io.ioexception;</code>

<code>import</code> <code>java.io.inputstream;</code>

<code>import</code> <code>java.io.outputstream;</code>

<code>import</code> <code>java.net.httpurlconnection;</code>

<code>import</code> <code>java.net.malformedurlexception;</code>

<code>import</code> <code>java.net.url;</code>

<code>import</code> <code>java.net.urlconnection;</code>

<code>import</code> <code>java.net.urlencoder;</code>

<code>import</code> <code>android.util.log;</code>

<code>public</code> <code>class</code> <code>netutils {</code>

<code>    </code><code>private</code> <code>static</code> <code>final</code> <code>string tag =</code><code>"netutils"</code><code>;</code>

<code>    </code> 

<code>    </code><code>/**</code>

<code>     </code><code>* 使用post的方式登录</code>

<code>     </code><code>* @param username</code>

<code>     </code><code>* @param password</code>

<code>     </code><code>* @return</code>

<code>     </code><code>*/</code>

<code>    </code><code>public</code> <code>static</code> <code>string loginofpost(string username, string password) {</code>

<code>        </code><code>httpurlconnection conn =</code><code>null</code><code>;</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code> 

<code>            </code><code>conn = (httpurlconnection) url.openconnection();</code>

<code>            </code><code>conn.setrequestmethod(</code><code>"post"</code><code>);</code>

<code>            </code><code>conn.setconnecttimeout(</code><code>10000</code><code>);</code><code>// 连接的超时时间</code>

<code>            </code><code>conn.setreadtimeout(</code><code>5000</code><code>);</code><code>// 读数据的超时时间</code>

<code>            </code><code>conn.setdooutput(</code><code>true</code><code>);</code><code>// 必须设置此方法, 允许输出</code>

<code>//          conn.setrequestproperty("content-length", 234);     // 设置请求头消息, 可以设置多个</code>

<code>            </code><code>// post请求的参数</code>

<code>            </code><code>string data =</code><code>"username="</code> <code>+ username +</code><code>"&amp;password="</code> <code>+ password;</code>

<code>            </code><code>// 获得一个输出流, 用于向服务器写数据, 默认情况下, 系统不允许向服务器输出内容</code>

<code>            </code><code>outputstream out = conn.getoutputstream(); </code>

<code>            </code><code>out.write(data.getbytes());</code>

<code>            </code><code>out.flush();</code>

<code>            </code><code>out.close();</code>

<code>            </code><code>int</code> <code>responsecode = conn.getresponsecode();</code>

<code>            </code><code>if</code><code>(responsecode ==</code><code>200</code><code>) {</code>

<code>                </code><code>inputstream is = conn.getinputstream();</code>

<code>                </code><code>string state = getstringfrominputstream(is);</code>

<code>                </code><code>return</code> <code>state;</code>

<code>            </code><code>}</code><code>else</code> <code>{</code>

<code>                </code><code>log.i(tag,</code><code>"访问失败: "</code> <code>+ responsecode);</code>

<code>            </code><code>}</code>

<code>        </code><code>}</code><code>catch</code> <code>(exception e) {</code>

<code>            </code><code>e.printstacktrace();</code>

<code>        </code><code>}</code><code>finally</code> <code>{</code>

<code>            </code><code>if</code><code>(conn !=</code><code>null</code><code>) {</code>

<code>                </code><code>conn.disconnect();</code>

<code>        </code><code>}</code>

<code>        </code><code>return</code> <code>null</code><code>;</code>

<code>    </code><code>}</code>

<code>     </code><code>* 使用get的方式登录</code>

<code>     </code><code>* @return 登录的状态</code>

<code>    </code><code>public</code> <code>static</code> <code>string loginofget(string username, string password) {</code>

<code>            </code><code>string data =</code><code>"username="</code> <code>+ urlencoder.encode(username) +</code><code>"&amp;password="</code> <code>+ urlencoder.encode(password);</code>

<code>            </code><code>conn.setrequestmethod(</code><code>"get"</code><code>);      </code><code>// get或者post必须得全大写</code>

<code>                </code><code>conn.disconnect();     </code><code>// 关闭连接</code>

<code>     </code><code>* 根据流返回一个字符串信息</code>

<code>     </code><code>* @param is</code>

<code>     </code><code>* @throws ioexception</code>

<code>    </code><code>private</code> <code>static</code> <code>string getstringfrominputstream(inputstream is)</code><code>throws</code> <code>ioexception {</code>

<code>        </code><code>bytearrayoutputstream baos =</code><code>new</code> <code>bytearrayoutputstream();</code>

<code>        </code><code>byte</code><code>[] buffer =</code><code>new</code> <code>byte</code><code>[</code><code>1024</code><code>];</code>

<code>        </code><code>int</code> <code>len = -</code><code>1</code><code>;</code>

<code>        </code> 

<code>        </code><code>while</code><code>((len = is.read(buffer)) != -</code><code>1</code><code>) {</code>

<code>            </code><code>baos.write(buffer,</code><code>0</code><code>, len);</code>

<code>        </code><code>is.close();</code>

<code>        </code><code>string html = baos.tostring(); </code><code>// 把流中的数据转换成字符串, 采用的编码是: utf-8</code>

<code>//      string html = new string(baos.tobytearray(), "gbk");</code>

<code>        </code><code>baos.close();</code>

<code>        </code><code>return</code> <code>html;</code>

<code>}</code>

继续阅读