1. 程式人生 > >android資料庫mysql連線案例(android json mysql urlConnection urlClient)

android資料庫mysql連線案例(android json mysql urlConnection urlClient)

HTTP 協議可能是現在 Internet 上使用得最多、最重要的協議了,越來越多的 Java 應用程式需要直接通過 HTTP 協議來訪問網路資源。在 JDK 的 java.net 包中已經提供了訪問 HTTP 協議的基本功能:HttpURLConnection。但是對於大部分應用程式來說,JDK 庫本身提供的功能還不夠豐富和靈活。

      除此之外,在Android中,androidSDK中集成了ApacheHttpClient模組,用來提供高效的、最新的、功能豐富的支援  HTTP 協議工具包,並且它支援 HTTP 協議最新的版本和建議。使用HttpClient可以快速開發出功能強大的Http

程式。

HttpClient是個很不錯的開源框架,封裝了訪問http的請求頭,引數,內容體,響應等等,

HttpURLConnection是java的標準類,什麼都沒封裝,用起來太原始,不方便,比如重訪問的自定義,以及一些高階功能等。

URLConnection

String urlAddress = "http://192.168.1.102:8080/AndroidServer/login.do"; 
    URL url; 
    HttpURLConnection uRLConnection; 
    public UrlConnectionToServer(){ 
 
    }      //向伺服器傳送get請求
    public String doGet(String username,String password){ 
        String getUrl = urlAddress + "?username="+username+"&password="+password; 
        try { 
            url = new URL(getUrl); 
            uRLConnection = (HttpURLConnection)url.openConnection(); 
            InputStream is = uRLConnection.getInputStream(); 
            BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
            String response = ""; 
            String readLine = null; 
            while((readLine =br.readLine()) != null){ 
                //response = br.readLine(); 
                response = response + readLine; 
            } 
            is.close(); 
            br.close(); 
            uRLConnection.disconnect(); 
            return response; 
        } catch (MalformedURLException e) { 
            e.printStackTrace(); 
            return null; 
        } catch (IOException e) { 
            e.printStackTrace(); 
            return null; 
        } 
    } 
          //向伺服器傳送post請求
    public String doPost(String username,String password){ 
        try { 
            url = new URL(urlAddress); 
            uRLConnection = (HttpURLConnection)url.openConnection(); 
            uRLConnection.setDoInput(true); 
            uRLConnection.setDoOutput(true); 
            uRLConnection.setRequestMethod("POST"); 
            uRLConnection.setUseCaches(false); 
            uRLConnection.setInstanceFollowRedirects(false); 
            uRLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
            uRLConnection.connect(); 
             
            DataOutputStream out = new DataOutputStream(uRLConnection.getOutputStream()); 
            String content = "username="+username+"&password="+password; 
            out.writeBytes(content); 
            out.flush(); 
            out.close(); 
             
            InputStream is = uRLConnection.getInputStream(); 
            BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
            String response = ""; 
            String readLine = null; 
            while((readLine =br.readLine()) != null){ 
                //response = br.readLine(); 
                response = response + readLine; 
            } 
            is.close(); 
            br.close(); 
            uRLConnection.disconnect(); 
            return response; 
        } catch (MalformedURLException e) { 
            e.printStackTrace(); 
            return null; 
        } catch (IOException e) { 
            e.printStackTrace(); 
            return null; 
        } 
    }

HTTPClient

String urlAddress = "http://192.168.1.102:8080/qualityserver/login.do"; 
public HttpClientServer(){ 
         
 } 
     
public String doGet(String username,String password){ 
    String getUrl = urlAddress + "?username="+username+"&password="+password; 
    HttpGet httpGet = new HttpGet(getUrl); 
    HttpParams hp = httpGet.getParams(); 
    hp.getParameter("true"); 
    //hp. 
    //httpGet.setp 
    HttpClient hc = new DefaultHttpClient(); 
    try { 
        HttpResponse ht = hc.execute(httpGet); 
        if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ 
            HttpEntity he = ht.getEntity(); 
            InputStream is = he.getContent(); 
            BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
            String response = ""; 
            String readLine = null; 
            while((readLine =br.readLine()) != null){ 
                //response = br.readLine(); 
                response = response + readLine; 
            } 
            is.close(); 
            br.close(); 
             
            //String str = EntityUtils.toString(he); 
            System.out.println("========="+response); 
            return response; 
        }else{ 
            return "error"; 
        } 
    } catch (ClientProtocolException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        return "exception"; 
    } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        return "exception"; 
    }     

 
public String doPost(String username,String password){ 
    //String getUrl = urlAddress + "?username="+username+"&password="+password; 
    HttpPost httpPost = new HttpPost(urlAddress); 
    List params = new ArrayList(); 
    NameValuePair pair1 = new BasicNameValuePair("username", username); 
    NameValuePair pair2 = new BasicNameValuePair("password", password); 
    params.add(pair1); 
    params.add(pair2); 
     
    HttpEntity he; 
    try { 
        he = new UrlEncodedFormEntity(params, "gbk"); 
        httpPost.setEntity(he); 
         
    } catch (UnsupportedEncodingException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
    }  
     
    HttpClient hc = new DefaultHttpClient(); 
    try { 
        HttpResponse ht = hc.execute(httpPost); 
        //連線成功 
        if(ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ 
            HttpEntity het = ht.getEntity(); 
            InputStream is = het.getContent(); 
            BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
            String response = ""; 
            String readLine = null; 
            while((readLine =br.readLine()) != null){ 
                //response = br.readLine(); 
                response = response + readLine; 
            } 
            is.close(); 
            br.close(); 
             
            //String str = EntityUtils.toString(he); 
            System.out.println("=========&&"+response); 
            return response; 
        }else{ 
            return "error"; 
        } 
    } catch (ClientProtocolException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        return "exception"; 
    } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        return "exception"; 
    }    
}

servlet端json轉化

resp.setContentType("text/json"); 
        resp.setCharacterEncoding("UTF-8"); 
        toDo = new ToDo(); 
        List<UserBean> list = new ArrayList<UserBean>(); 
        list = toDo.queryUsers(mySession); 
        String body; 

        //設定JSON 
        JSONArray array = new JSONArray(); 
        for(UserBean bean : list) 
        { 
            JSONObject obj = new JSONObject(); 
            try 
            { 
                 obj.put("username", bean.getUserName()); 
                 obj.put("password", bean.getPassWord()); 
             }catch(Exception e){} 
             array.add(obj); 
        } 
        pw.write(array.toString()); 
        System.out.println(array.toString());

android接收端

String urlAddress = "http://192.168.1.102:8080/qualityserver/result.do"; 
        String body =  
            getContent(urlAddress); 
        JSONArray array = new JSONArray(body);           
        for(int i=0;i<array.length();i++) 
        { 
            obj = array.getJSONObject(i); 
            sb.append("使用者名稱:").append(obj.getString("username")).append("\t"); 
            sb.append("密碼:").append(obj.getString("password")).append("\n"); 
             
            HashMap<String, Object> map = new HashMap<String, Object>(); 
            try { 
                userName = obj.getString("username"); 
                passWord = obj.getString("password"); 
            } catch (JSONException e) { 
                e.printStackTrace(); 
            } 
            map.put("username", userName); 
            map.put("password", passWord); 
            listItem.add(map); 
             
        } 
         
        } catch (Exception e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
         
        if(sb!=null) 
        { 
            showResult.setText("使用者名稱和密碼資訊:"); 
            showResult.setTextSize(20); 
        } else 
            extracted(); 
  
       //設定adapter  
        SimpleAdapter simple = new SimpleAdapter(this,listItem, 
                android.R.layout.simple_list_item_2, 
                new String[]{"username","password"}, 
                new int[]{android.R.id.text1,android.R.id.text2}); 
        listResult.setAdapter(simple); 
         
        listResult.setOnItemClickListener(new OnItemClickListener() { 
            @Override 
            public void onItemClick(AdapterView<?> parent, View view, 
                    int position, long id) { 
                int positionId = (int) (id+1); 
                Toast.makeText(MainActivity.this, "ID:"+positionId, Toast.LENGTH_LONG).show(); 
             
            } 
        }); 
    } 
    private void extracted() { 
        showResult.setText("沒有有效的資料!"); 
    } 
    //和伺服器連線 
    private String getContent(String url)throws Exception{ 
        StringBuilder sb = new StringBuilder(); 
        HttpClient client =new DefaultHttpClient(); 
        HttpParams httpParams =client.getParams(); 
         
        HttpConnectionParams.setConnectionTimeout(httpParams, 3000); 
        HttpConnectionParams.setSoTimeout(httpParams, 5000); 
        HttpResponse response = client.execute(new HttpGet(url)); 
        HttpEntity entity =response.getEntity(); 
         
        if(entity !=null){ 
            BufferedReader reader = new BufferedReader(new InputStreamReader 
                    (entity.getContent(),"UTF-8"),8192); 
            String line =null; 
            while ((line= reader.readLine())!=null){ 
                sb.append(line +"\n"); 
            } 
            reader.close(); 
        } 
        return sb.toString(); 
    }