Android (向伺服器提交資料Get-Post)
阿新 • • 發佈:2019-01-03
這次的內容非常的重要,屬於網路程式設計,向伺服器提交資料
主要講到兩種方式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;
}