中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中使用URLConnection實現網絡編程

發布時間:2021-03-29 17:03:17 來源:億速云 閱讀:151 作者:Leah 欄目:移動開發

這篇文章將為大家詳細講解有關怎么在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);
  }
}

關于怎么在Android中使用URLConnection實現網絡編程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

得荣县| 同心县| 中阳县| 武平县| 界首市| 亳州市| 镇宁| 钦州市| 五常市| 沙坪坝区| 育儿| 阿拉善左旗| 台东县| 商都县| 湘潭市| 吴堡县| 汾阳市| 通辽市| 盐山县| 丰台区| 泾川县| 东乡族自治县| 舒兰市| 平谷区| 苗栗县| 荆州市| 竹山县| 辽宁省| 甘德县| 宜黄县| 彩票| 永康市| 香格里拉县| 浦北县| 广宗县| 镇康县| 淳安县| 弥渡县| 长治县| 肇庆市| 隆德县|