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>"&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>"&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>