国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發使用URLConnection進行網絡編程詳解

2019-10-22 18:16:07
字體:
來源:轉載
供稿:網友

本文實例講述了Android開發使用URLConnection進行網絡編程。分享給大家供大家參考,具體如下:

URL的openConnection()方法將返回一個URLConnection,該對象表示應用程序和URL之間的通信連接,程序可以通過URLConnection實例向該URL發送請求,讀取URL引用的資源。通常創建一個和URL的連接,并發送請求,讀取此URL引用的資源。

需要如下步驟:

a)通過調用URL對象openConnection()方法來創建URLConnection對象

b)設置URLConnection的參數和普通請求屬性

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.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

發送POST請求必須設置如下兩行

conn.setDoInput(true):設置該URLConnection的doInput請求頭字段的值
coon.setDoOutput(true):

c)調用connect():打開到此URL引用的資源的通信鏈接(如果尚未建立這樣的連接)。

如果在已打開連接(此時 connected 字段的值為 true)的情況下調用 connect 方法,則忽略該調用.
URLConnection 對象經歷兩個階段:首先創建對象,然后建立連接。
在創建對象之后,建立連接之前,可指定各種選項(例如doInput和UseCaches).連接后再進行設置就會發生錯誤。連接后才能進行的操作(例如getContentLength),如有必要,將隱式執行連接.

d)如果只是發送GET方式請求,使用connect方法建立和遠程資源之間的實際連接即可,在請求的地址中傳入數據。

如果需要發送Post方法請求。需要獲取URLConnection實例對應的輸出流來發送請求參數,

PrintWriter out=new PrintWriter(conn.getOutputStream());//解決亂碼問題String n=EncodingUtils.getString("張三".getBytes(),"UTF-8");out.write("name="+n+"&pwd="+pwd);out.flush();//刷新輸出流的緩沖

e)遠程資源變為可用,程序可以訪問遠程資源的頭字段或通過輸入流讀取遠程資源的數據。

getInputStream()獲取輸入流。

從輸入流讀取response的數據。

注意:

1)如果既要使用輸入流讀取URLConnection響應的內容,也要使用輸出流發送請求參數,一定要先使用輸出流,再使用輸入流。

2)借助于URLConnection類的幫助,應用程序可以非常方便地與指定站點交換信息,包括發送GET請求,POST請求,并獲取網站的響應等。

代碼編寫步驟如下:

1.先寫一個服務器-web工程

新建一個Servlet--LoginServlet,簡單實現用戶的登錄~

@WebServlet("/LoginServlet")public class LoginServlet extends HttpServlet {  private static final long serialVersionUID = 1L;  public LoginServlet() {    // TODO Auto-generated constructor stub  }  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    doPost(request, response);  }  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    String name=request.getParameter("name");    String pwd=request.getParameter("pwd");    System.out.println(name+"  "+pwd);    OutputStream os=response.getOutputStream();    if("xuxu".equals(name)&&"123".equals(pwd)){      os.write(("成功").getBytes("UTF-8"));    }else{      os.write(("失敗").getBytes("UTF-8"));    }    os.flush();    os.close();  }}

2.新建一個android項目,在MainActivity中分別使用get方法和post方法實現用戶的登錄

public class MainActivity extends Activity {  private EditText name,pwd;  public void get(View view){    new Thread(){      public void run() {        try {          URL url=new URL("http://169.254.244.141:8090/ConnectionServlet/LoginServlet"+        "?name="+name+"&pwd="+pwd);          URLConnection conn=url.openConnection();          conn.connect();//真正的建立網絡連接          BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream()));          String line=null;          StringBuffer stringBuffer=new StringBuffer();//字符串,都可以存儲和操作字符串,它是變量          while ((line=reader.readLine())!=null) {            stringBuffer.append(line);          }          System.out.println(stringBuffer.toString());        } catch (Exception e) {          // TODO Auto-generated catch block          e.printStackTrace();        }      };    }.start();  }  public void post(View view){    new Thread(){      public void run() {        try {          URL url=new URL("http://169.254.244.141:8090/ConnectionServlet/LoginServlet"        );          URLConnection conn=url.openConnection();          //必須設置          conn.setDoInput(true);          conn.setDoOutput(true);          conn.connect();//真正的建立網絡連接          PrintWriter printWriter=new PrintWriter(conn.getOutputStream());          printWriter.write("name="+name+"&pwd="+pwd);          printWriter.flush();          printWriter.close();          BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream()));          String line=null;          StringBuffer stringBuffer=new StringBuffer();          while ((line=reader.readLine())!=null) {            stringBuffer.append(line);          }          System.out.println(stringBuffer.toString());        } catch (Exception e) {          // TODO Auto-generated catch block          e.printStackTrace();        }      };    }.start();  }  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    name=(EditText) findViewById(R.id.name);    pwd=(EditText) findViewById(R.id.pwd);  }}

3.運行,把Tomcat打開~

效果圖如下:
Android,URLConnection,網絡編程

附:完整實例代碼點擊此處本站下載

 

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香港 | 车险| 马鞍山市| 潜江市| 凌源市| 石渠县| 桐乡市| 称多县| 邯郸市| 广灵县| 漳浦县| 夏津县| 固镇县| 漠河县| 江阴市| 建平县| 新乐市| 饶河县| 高平市| 万盛区| 文水县| 通榆县| 若羌县| 茌平县| 万盛区| 莎车县| 罗源县| 凤山县| 伊吾县| 松江区| 沂源县| 灵川县| 凭祥市| 龙山县| 美姑县| 平乡县| 小金县| 盱眙县| 万盛区| 白朗县| 余干县|