1、效果圖展示
2、界面布局
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- >
- <Button
- android:id="@+id/get"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/get"
- />
- <Button
- android:id="@+id/post"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/post"
- />
- </LinearLayout>
- <EditText
- android:id="@+id/show"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:editable="false"
- android:cursorVisible="false"
- android:gravity="top"
- />
- </LinearLayout>
3、改發送get、post請求的工具類,如下:
- public class GetPostUtil
- {
- /**
- * 向指定URL發送GET方法的請求
- *
- * @param url
- * 發送請求的URL
- * @param params
- * 請求參數,請求參數應該是name1=value1&name2=value2的形式。
- * @return URL所代表遠程資源的響應
- */
- public static String sendGet(String url, String params)
- {
- String result = "";
- BufferedReader in = null;
- try
- {
- String urlName = url + "?" + params;
- URL realUrl = new URL(urlName);
- // 打開和URL之間的連接
- URLConnection conn = realUrl.openConnection();
- // 設置通用的請求屬性
- conn.setRequestProperty("accept", "*/*");
- conn.setRequestProperty("connection", "Keep-Alive");
- conn.setRequestProperty("user-agent",
- "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
- // 建立實際的連接
- conn.connect();
- // 獲取所有響應頭字段
- Map<String, List<String>> map = conn.getHeaderFields();
- // 遍歷所有的響應頭字段
- for (String key : map.keySet())
- {
- System.out.println(key + "--->" + map.get(key));
- }
- // 定義BufferedReader輸入流來讀取URL的響應
- in = new BufferedReader(
- new InputStreamReader(conn.getInputStream()));
- String line;
- while ((line = in.readLine()) != null)
- {
- result += "\n" + line;
- }
- }
- catch (Exception e)
- {
- System.out.println("發送GET請求出現異常!" + e);
- e.printStackTrace();
- }
- // 使用finally塊來關閉輸入流
- finally
- {
- try
- {
- if (in != null)
- {
- in.close();
- }
- }
- catch (IOException ex)
- {
- ex.printStackTrace();
- }
- }
- return result;
- }
-
- /**
- * 向指定URL發送POST方法的請求
- *
- * @param url
- * 發送請求的URL
- * @param params
- * 請求參數,請求參數應該是name1=value1&name2=value2的形式。
- * @return URL所代表遠程資源的響應
- */
- public static String sendPost(String url, String params)
- {
- PrintWriter out = null;
- BufferedReader in = null;
- String result = "";
- try
- {
- URL realUrl = new URL(url);
- // 打開和URL之間的連接
- URLConnection conn = realUrl.openConnection();
- // 設置通用的請求屬性
-
- conn.setRequestProperty("accept", "*/*");
- conn.setRequestProperty("connection", "Keep-Alive");
- conn.setRequestProperty("user-agent",
- "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
- // 發送POST請求必須設置如下兩行
- conn.setDoOutput(true);
- conn.setDoInput(true);
- // 獲取URLConnection對象對應的輸出流
- out = new PrintWriter(conn.getOutputStream());
- // 發送請求參數
- out.print(params);
- // flush輸出流的緩沖
- out.flush();
- // 定義BufferedReade r輸入流來讀取URL的響應
- in = new BufferedReader(
- new InputStreamReader(conn.getInputStream()));
- String line;
- while ((line = in.readLine()) != null)
- {
- result += "\n" + line;
- }
- }
- catch (Exception e)
- {
- System.out.println("發送POST請求出現異常!" + e);
- e.printStackTrace();
- }
- // 使用finally塊來關閉輸出流、輸入流
- finally
- {
- try
- {
- if (out != null)
- {
- out.close();
- }
- if (in != null)
- {
- in.close();
- }
- }
- catch (IOException ex)
- {
- ex.printStackTrace();
- }
- }
- return result;
- }
- }
如果需要發送get請求只要調用URLConnection的connect()方法去建立實際的連接即可;如果需要發送post請求,則需要獲取URLConnection的OutputStream,然後再向網絡中輸出請求參數,如以上程序!!!
4、activity程序代碼
- public class GetPostMain extends Activity
- {
- Button get , post;
- EditText show;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- get = (Button) findViewById(R.id.get);
- post = (Button) findViewById(R.id.post);
- show = (EditText)findViewById(R.id.show);
- get.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- String response = GetPostUtil
- .sendGet("http://192.168.65.1:8080/abc/a.jsp" , null);
- show.setText(response);
-
- }
- });
- post.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- String response = GetPostUtil
- .sendPost("http://192.168.65.1:8080/abc/login.jsp"
- , "name=crazyit.org&pass=leegang");
- show.setText(response);
-
- }
- });
- }
- }
該程序所發送的get、post請求都是向本地局域網內:http://192/168.65.1:8080/abc應用下兩個頁面發送,這個應用都是部署在本機的web應用;