Android——網絡 GET請求+POST請求
擷取資料用GET請求 ??
增删改查修改資料用POST請求
package com.example.jreduch07;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HttpActivity extends AppCompatActivity {
public EditText et;
private Button search;
private Button search1;
private TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_http);
et=(EditText)findViewById(R.id.et);
search=(Button)findViewById(R.id.search);
search1=(Button)findViewById(R.id.search1);
show=(TextView)findViewById(R.id.show);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url="http://192.168.1.48:8080/HttpTest/index.jsp?option=getUser&uName=jerehedu";
new MyGetJob().execute(url);
}
});
search1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] arg=new String[2];
arg[0]="http://192.168.1.48:8080/HttpTest/index.jsp";
arg[1]="option=getUser&uName=jerehedu";
new MyPostJob1().execute(arg);
}
});
}
private class MyPostJob1 extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
HttpURLConnection con=null;
InputStream is=null;
StringBuilder sbd=new StringBuilder();
try {
URL url=new URL(strings[0]);
con= (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5*1000);
con.setReadTimeout(5*1000);
con.setRequestMethod("POST");
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestProperty("Charset","UTF-8");
con.setRequestProperty("Content-type","application/x-www-form-urlencoded");
// con.setRequestProperty("Charset","UTF-8");
// con.setRequestProperty("Content-type","application/x-www-from-urlencoded");
//params應該是這樣的=》option=getUser&uName=jerehedu
String params=strings[1];
OutputStream os=con.getOutputStream(); //資料傳輸 流
os.write(params.getBytes());
os.flush();
os.close();
if (con.getResponseCode()==200) {
is=con.getInputStream();
int next = 0;
byte[] b = new byte[1024];
while ((next = is.read(b)) > 0) {
sbd.append(new String(b, 0, next));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if (con!=null){
con.disconnect(); //斷開連接配接
}
}
}
return sbd.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
show.setText("POST請求結果:"+s);
}
}
/*
AsyncTask異步任務類
異步任務類的第一個參數會傳到doInBackground方法中
第三個參數
#指定doINBackground方法的傳回值
#doINBackground方法的傳回值會被OnPostExecute接收
*/
private class MyGetJob extends AsyncTask<String, Void, String> {
//onPreExecute在主線程中執行指令
//進度條的初始化
@Override
protected void onPreExecute() {
super.onPreExecute();
}
//doInBackground在子線程中執行名指令
@Override
protected String doInBackground(String... strings) {
HttpURLConnection con = null;
InputStream is = null;
StringBuilder sbd = new StringBuilder();
try {
URL url = new URL(strings[0]);
con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5 * 1000);
con.setReadTimeout(5 * 1000);
/*
*http相應200:成功
* 404未找到
* 500發生錯誤
*/
if (con.getResponseCode() == 200) {
is = con.getInputStream();
int next = 0;
byte[] bt = new byte[1024];
while ((next = is.read(bt)) > 0) {
sbd.append(new String(bt, 0, next));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if (con != null) {
con.disconnect(); //斷開連接配接
}
}
}
return sbd.toString();
}
//onPostExecute在UI線程中執行指令 主線程
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
show.setText(s);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.jreduch07.HttpActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名!"
android:textSize="20dp"
android:layout_alignTop="@+id/et"
android:layout_alignParentStart="true"
android:layout_alignBottom="@+id/et"
android:id="@+id/textView" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="請輸入要查找姓名"
android:id="@+id/et"
android:layout_alignBottom="@+id/search"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查詢(GET方法)"
android:id="@+id/search"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="#fff30d"
android:id="@+id/show"
android:textSize="30sp"
android:text="查詢結果:"
android:layout_below="@+id/search1"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查詢(post方法)"
android:id="@+id/search1"
android:layout_below="@+id/et"
android:layout_alignParentEnd="true" />
</RelativeLayout>