Android客戶端與伺服器進行通訊
阿新 • • 發佈:2019-01-11
在Android開發中,經常使用到與後臺進行互動,後臺人員給你一個URL,Android使用HttpURLConnection得到後臺返回的資料。這些任務是開發中經常遇到的。這裡,我們自己搭建一個簡易的後臺,來實現Android客戶端與後臺的互動。
首先,後臺伺服器程式碼
public class LoginServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("userName");
String password = req.getParameter("password");
resp.setContentType("text/html");
if (username.equals("admin" ) && password.equals("123456")){
// 與Android客戶端互動
resp.getOutputStream().print("login successful");
}else {
// 與Android客戶端互動
resp.getWriter().print("login fail");
}
}
}
配置web.xml檔案
<servlet>
<servlet-name> LoginServlet</servlet-name>
<servlet-class>com.login.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
這裡就不多說了。
接下來是Android端的核心程式碼:
private void getReturnData() {
new Thread(new Runnable() {
@Override
public void run() {
URL url = null;
String result = "";
HttpURLConnection httpURLConnection = null;
InputStreamReader inputStreamReader = null;
try {
url = new URL("http://172.17.131.81:8080/login?userName=admin&password=123456");
httpURLConnection = (HttpURLConnection) url.openConnection();
inputStreamReader = new InputStreamReader(httpURLConnection.getInputStream());
BufferedReader bf = new BufferedReader(inputStreamReader);
String readLine = null;
while ((readLine = bf.readLine()) != null) {
result += readLine;
}
inputStreamReader.close();
httpURLConnection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
Message message = new Message();
message.what = 0x123;
message.obj = result;
handler.sendMessage(message);
}
}).start();
}
我這裡是使用了Handler將獲取的返回資料顯示在TextView上。
**在這裡,要注意**URL的地址要保證正確,不然你肯定不會成功的。
我的URL:"http://172.17.131.81:8080/login?userName=admin&password=123456"
1、172.17.131.81:8080
這裡的ip地址是區域網中你的伺服器的地址,不能寫成127.0.0.1或者localhost,不然會出現未知的錯誤。
2、http://172.17.131.81:8080/login
這裡的/login是在web.xml中配置的,即servlet的<url-pattern>
。 如果前面加入專案名,即http://ip:8080/LoginWeb/login
也會出現錯誤,錯誤如下:
最後的userName與password是請求引數,這裡使用的get請求方式。
如此一來,就完成了Android與伺服器的通訊。
如有不對,敬請指出,謝謝。