1. 程式人生 > >Android客戶端與伺服器進行通訊

Android客戶端與伺服器進行通訊

在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與伺服器的通訊。

如有不對,敬請指出,謝謝。