1. 程式人生 > >android客戶端連線伺服器流程

android客戶端連線伺服器流程

大體流程:點選開啟連結(已讀)

暫時使用:android客戶端:瘋狂android講義第19章AuctionClient裡     (Login.java//MainActivity.java//HomeListener.java//callbacks.java及util裡DialogUtilHttpUtil

可能初學遇到問題:

URL

 *必許給app增添訪問網路的許可權:

    AndroidManifest.xml里加許可權:  <uses-permission android:name="android.permission.INTERNET"/>   

程式碼 Login.java:

package com.example.administrator.bs01;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.example.administrator.bs01.util.DialogUtil;
import com.example.administrator.bs01.util.HttpUtil;

import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;


public class Login extends Activity
{
    // 定義介面中兩個文字框
    EditText etName, etPass;
    // 定義介面中兩個按鈕
    Button bnLogin, bnCancel;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        // 獲取介面中兩個編輯框
        etName = (EditText) findViewById(R.id.userEditText);
        etPass = (EditText) findViewById(R.id.pwdEditText);
        // 獲取介面中的兩個按鈕
        bnLogin = (Button) findViewById(R.id.bnLogin);
        bnCancel = (Button) findViewById(R.id.bnCancel);
        // 為bnCancal按鈕的單擊事件繫結事件監聽器
        bnCancel.setOnClickListener(new HomeListener(this));
        bnLogin.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // 執行輸入校驗
                if (validate())  // ①
                {
                    // 如果登入成功
                    if (loginPro())  // ②
                    {
                        // 啟動Main Activity
                        Intent intent = new Intent(Login.this
                                , MainActivity.class);//更改
                        startActivity(intent);
                        // 結束該Activity
                        finish();
                    }
                    else
                    {
                        DialogUtil.showDialog(Login.this
                                , "使用者名稱稱或者密碼錯誤,請重新輸入!", false);
                    }
                }
            }
        });
    }

    private boolean loginPro()
    {
        // 獲取使用者輸入的使用者名稱、密碼
        String username = etName.getText().toString();
        String pwd = etPass.getText().toString();
        JSONObject jsonObj;
        try
        {
            jsonObj = query(username, pwd);
            // 如果userId 大於0
            if (jsonObj.getInt("userId")>0)
            {
                return true;
            }
        }
        catch (Exception e)
        {
            DialogUtil.showDialog(this
                    , "伺服器響應異常,請稍後再試!", false);
            e.printStackTrace();
        }

        return false;
    }

    // 對使用者輸入的使用者名稱、密碼進行校驗
    private boolean validate()
    {
        String username = etName.getText().toString().trim();
        if (username.equals(""))
        {
            DialogUtil.showDialog(this, "使用者賬戶是必填項!", false);
            return false;
        }
        String pwd = etPass.getText().toString().trim();
        if (pwd.equals(""))
        {
            DialogUtil.showDialog(this, "使用者口令是必填項!", false);
            return false;
        }
        return true;
    }

    // 定義傳送請求的方法
    private JSONObject query(String username, String password)
            throws Exception
    {
        // 使用Map封裝請求引數
        Map<String, String> map = new HashMap<>();
        map.put("username", username);
        map.put("password", password);
        // 定義傳送請求的URL
        String url = HttpUtil.BASE_URL
+ "login.jsp";根據個人伺服器設定BASE_URL(在HttpUtil中更改設定) // 傳送請求 return new JSONObject(HttpUtil.postRequest(url, map)); } }


伺服器端:

package servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

//import servlet.base.BaseServlet;
//import org.crazyit.auction.service.AuctionManager;
import java.io.*;
import org.json.*;

/**
 * Description:
 * <br/>網站: <a href="http://www.crazyit.org">瘋狂Java聯盟</a>
 * <br/>Copyright (C), 2011-2016, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee 
[email protected]
* @version 1.0 */ @WebServlet(urlPatterns="/android/login.jsp") public class LoginServlet extends HttpServlet { public void service(HttpServletRequest request , HttpServletResponse response) throws IOException , ServletException { String user = request.getParameter("username"); String pass = request.getParameter("password"); System.out.println(user + "-++-" + pass); response.setContentType("text/html; charset=utf-8"); int userId=0; // 登入成功 if (user.equals("success")) { userId = 1; request.getSession(true).setAttribute("userId" , userId); } try { // 把驗證的userId封裝成JSONObject JSONObject jsonObj = new JSONObject() .put("userId" , userId); // 輸出響應 response.getWriter().println(jsonObj.toString()); } catch (JSONException ex) { ex.printStackTrace(); } } }

相關推薦

android客戶連線伺服器流程

大體流程:點選開啟連結(已讀) 暫時使用:android客戶端:瘋狂android講義第19章AuctionClient裡     (Login.java//MainActivity.java//HomeListener.java//callbacks.java及uti

Android客戶伺服器連線通訊

遇到一個小問題: 第一個Activity與伺服器連線時能夠成功連線 但是利用跳轉之後的Activity與伺服器連線一直不成功 解決: 在登陸時呼叫connect方法與伺服器連線,Activity跳轉之後就會斷開連線,因為連線函式是直

Android簡單實現Socket通訊,客戶連線伺服器後,伺服器客戶傳送文字資料

案例實現的是簡單的Socket通訊,當客戶端(Android客戶端)連線到指定伺服器以後,伺服器向客戶端傳送一句話文字資訊(你可以拓展其它的了) 先看一下服務端程式的實現吧 Server.java import java.io.IOException;

wifi下的android客戶訪問伺服器URL連線不了

       今天編寫了一個解析json的小程式,在同一個區域網下訪問伺服器返回的json資料總是不成功,除錯的情況下,發現程式碼到URL url = new URL(……)這行就進行不下去了,也就是

Mina長連線框架實現Android客戶伺服器通訊

一、概述         Apache Mina Server 是一個網路通訊應用框架,也就是說,它主要是對基於TCP/IP、UDP/IP協議棧的通訊框架(當然,也可以提供JAVA 物件的序列化服務、虛擬機器管道通訊服務等),Mina 可以幫助我們快速開發高效能、高擴充套件

PG客戶連線伺服器報Connection refused (0x0000274D/10061) 的問題分析

C:\Users\Administrator>psql -h 192.168.80.189 -U highgo -p 5899 psql: 無法聯接到伺服器: Connection refused (0x0000274D/10061)       

android客戶伺服器互動 如何保持session

最近在開發專案的過程中,遇到android與web伺服器要在同一session下通訊的問題。 在解決問題前先回顧下Session與Cookie: Cookie和Session都為了用來儲存狀態資訊,都是儲存客戶端狀態的機制,它們都是為了解決HTTP無狀態的問題而所做

android客戶伺服器獲取json資料並解析的實現程式碼

package com.nuoter.adapterUntil;    import java.util.HashMap;  import java.util.List;    import android.content.Context;  import android.graphics.Bitmap;

客戶連線伺服器,配置出錯“連線超時”或者“無監聽程式”解決方法

這兩天在進行Oracle的客戶端配置,伺服器OS為Windows XP 64,客戶端OS為Win7 64,oracle版本為11.2。 先說下伺服器端自己的疑惑,由於自己是新手,很多都不明白是怎麼個回事。 1)關於服務端監聽程式配置時候的SID設定 我在建立資料庫的時候,設定

java網路程式設計基於TCP的多客戶連線伺服器

package com.test.net; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.S

Android 客戶伺服器進行資料互動(一、登入伺服器

概要 安卓APP要實現很多功能(比如登入註冊、發表評論等)時都必須要使用到網路資料互動。所以在學習了這部分內容後,就將其以最常見的登入過程為例整理出來,也方便跟我一樣的新手能迅速學習上手。 預期效果圖如下,輸入手機號和密碼,點選Login按鈕,上傳資料到伺

Android客戶伺服器的json資料互動(很詳細)

      Android客戶端與伺服器端的json資料互動,主要是通過json形式的資料互動,就是json的寫入和解析。  先看效果圖,我最討厭講東西,一個圖沒有的。 算了,看來我不是寫部落格的材料,寫不下去了,要排版之類的麻煩,大家還是直接去下載原始碼,裡面有大量的注

Android客戶伺服器進行通訊

在Android開發中,經常使用到與後臺進行互動,後臺人員給你一個URL,Android使用HttpURLConnection得到後臺返回的資料。這些任務是開發中經常遇到的。這裡,我們自己搭建一個簡易的後臺,來實現Android客戶端與後臺的互動。 首先,後臺

(二)用多執行緒管理TCP多個客戶連線伺服器

該程式的服務端大概工作邏輯如左圖: 首先說說這個程式的作用:這個程式可用於多個客戶端通過連線伺服器來互相通訊。如qq群聊。當一個客戶端有資訊發過來後,服務端就會通過客戶端佇列轉發給其他客戶端 先上程式碼: //TCP服務端 #include"myhead.h" struc

Linux c==TCP的多個客戶連線伺服器 (20)

通過父子程序實現TCP的多個客戶端連線伺服器 tcp_sever_fork.c #include <stdio.h> #include <string.h> #i

Socket 通訊原理(Android客戶伺服器以TCP&&UDP方式互通)

ZERO、前言 有關通訊原理內容是在網上或百科整理得到,程式碼部分為本人所寫,如果不當,還望指教。 一、Socket通訊簡介  Android與伺服器的通訊方式主要有兩種,一是Http通訊,一是Socket通訊。兩者的最大差異在於,http連線使用的是“請求—響應方式

DB2客戶連線伺服器

在DB2中從客戶端訪問伺服器端的資料庫時,不能直接用connect命令,而必須先建立通訊node,再在node的基礎上建立資料庫連線。在命令列的具體操作如下: ->db2 catalog tcpip node ABC remote serverName serve

Android 客戶伺服器進行資料互動(二、登入客戶

概要 Android客戶端分為User,HttpUtil,HttpCallbackListener,MainActivity四個部分。User model與服務端的一樣,一方面是用於本地使用者資訊的儲存model,另一方面也是為了保證構造URL時使用的key一

Android客戶伺服器互動方式總結

一、HttpClient 方式: //第一步:建立一個客戶端例項 HttpClient httpClient = new DefaultHttpClient(); //第二步:建立Http請求 HttpPost httpRequest = new Http

Android客戶伺服器交換資料的一種方案

由於很多因素使得客戶端和伺服器之間互動的一些資料都要經過加密,為了方便,很多使用非對稱的加密演算法進行加密,其中RSA演算法成為首選。下面說說在Android客戶端怎中怎麼應用這種加密方案。 首先在我們Android客戶端啟動應用程式的時候,我們先請求一個伺服器,讓服務將R