1. 程式人生 > >Android (向伺服器提交資料Get-Post)

Android (向伺服器提交資料Get-Post)

這次的內容非常的重要,屬於網路程式設計,向伺服器提交資料

主要講到兩種方式Get 和 Poset

Get:

Web端的程式碼:

<form action="login.do" method="get">
			<h2>登入</h2>
			使用者名稱:<input type="text" name="uname"/><br/>
			密碼:<input type="password" name="upass"/><br/>
			<input type="submit" value="登入"/><br/>
	</form>


Android端程式碼:

Android端還得配置,允許拿到網路許可權

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    private EditText et_main_uname;
    private EditText et_main_upass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_main_uname = (EditText) findViewById(R.id.et_main_uname);
        et_main_upass = (EditText) findViewById(R.id.et_main_upass);
    }
    public void loginGet(View view){
        String uname=et_main_uname.getText().toString();
        String upass=et_main_upass.getText().toString();
        String path="http://172.25.49.7:8080/Myweb_01/login.do";
new MyGetTask().execute();
} class MyGetTask extends AsyncTask{ @Override protected Object doInBackground(Object[] params) { String uname=params[0].toString(); String upass=params[1].toString(); String path=params[2].toString(); try { URL url=new URL(path+"?uname="+uname+"&upass="+upass); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); if(connection.getResponseCode()==200){ InputStream is=connection.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String s=br.readLine(); return s; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); String s=(String) o; Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show(); } } }


Post:

web端:

<form action="login.do" method="post">
			<h2>登入</h2>
			使用者名稱:<input type="text" name="uname"/><br/>
			密碼:<input type="password" name="upass"/><br/>
			<input type="submit" value="登入"/><br/>
	</form>

Android端:
  public void loginPost(View view){
       String uname=et_main_uname.getText().toString();
       String upass=et_main_upass.getText().toString();
       String path="http://193.168.2.141:7788/G160628_Server/login.do";
      new MyPostTask().execute(uname,upass,path);
    }

 class MyPostTask extends AsyncTask{

        @Override
        protected Object doInBackground(Object[] params) {
            String uname=params[0].toString();
            String upass=params[1].toString();
            String path=params[2].toString();
            try {
                URL url=new URL(path);
                HttpURLConnection conn= (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("POST");
                conn.setConnectTimeout(5000);

                //admin 123
                //uname=admin&upass=123456

                String s="uname="+uname+"&upass="+upass;
                 //新增請求頭
                conn.setRequestProperty("Content-Length",s.length()+"");
                conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

                conn.setDoOutput(true);//允許對外輸出資料

                OutputStream os=conn.getOutputStream();
                os.write(s.getBytes());

                if(conn.getResponseCode()==200){
                    InputStream is=conn.getInputStream();
                    BufferedReader br=new BufferedReader(new InputStreamReader(is));
                    String str=br.readLine();
                    return str;
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }