91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Android開發使用HttpURLConnection進行網絡編程詳解【附源碼下載】

發布時間:2020-08-27 12:00:12 來源:腳本之家 閱讀:122 作者:飄走的我 欄目:移動開發

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

——HttpURLConnection

URLConnection已經可以非常方便地與指定站點交換信息,URLConnection下還有一個子類:HttpURLConnection,HttpURLConnection在URLConnection的基礎上進行改進,增加了一些用于操作HTTP資源的便捷方法。

setRequestMethod(String):設置發送請求的方法
getResponseCode():獲取服務器的響應代碼
getResponseMessage():獲取服務器的響應消息

a)get請求的代碼:

conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(8000);//連接超時的毫秒數
conn.setReadTimeout(8000);//讀取超時的毫秒數

b)post請求的代碼

conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");

c)關閉連接

if(conn!=null)conn.disconnect();

實現多線程下載的步驟:

   a)創建URL對象
   b)獲取指定URL對象所指向資源的大小:getContentLength()
   c)在本地磁盤上創建一個與網絡資源相同大小的空文件
   d)計算每條線程應用下載網絡資源的指定部分
   e)依次創建,啟動多條線程來下載網絡資源的指定部分

注意需要的權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

更多關于Android權限控制的說明可參考Android Manifest功能與權限描述大全

這里我簡單的使用一下HttpURLConnection來進行文本解析和圖片解析

編程步驟如下:

1.先寫布局文件:

<LinearLayout 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"
 android:orientation="vertical">
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:onClick="click"
  android:text="加載圖片"
   />
 <ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerInParent="true"
  android:id="@+id/iv"/>
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:onClick="click2"
  android:text="加載文本"
   />
 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/tv"/>
</LinearLayout>

2.在MainActivity中文本解析的實現:

//文本解析
public void click2(View view){
 new Thread(){
  public void run() {
   try {
    URL url2=new URL("http://www.baidu.com");
    HttpURLConnection conn=(HttpURLConnection) url2.openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(8000);
    conn.setReadTimeout(8000);
    conn.connect();
    if(conn.getResponseCode()==200){
     InputStream inputStream=conn.getInputStream();
     ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
     byte[]b=new byte[512];
     int len;
     while ((len=inputStream.read(b))!=-1) {
      byteArrayOutputStream.write(b,0,len);
     }
     String text=new String(byteArrayOutputStream.toByteArray(),"UTF-8");
     Message msg=Message.obtain();
     msg.what=0x124;
     msg.obj=text;
     handler.sendMessage(msg);
    }
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  };
 }.start();
}

這里使用了GET方式~也可以用POST方式~

3.在MainActivity中圖片解析的實現:

//圖片解析
public void click(View view){
 final File file=new File(getCacheDir(),"2.png");
 if(file.exists()){
  System.out.println("使用緩存");
  Bitmap bitmap=BitmapFactory.decodeFile(file.getAbsolutePath());
  iv.setImageBitmap(bitmap);
 }else{
  new Thread(){
   public void run() {
    try {
     URL url=new URL("http://192.168.207.1:8090/2.png");
     System.out.println("使用網絡");
     HttpURLConnection conn=(HttpURLConnection) url.openConnection();
     conn.setRequestMethod("GET");
     conn.setConnectTimeout(8000);
     conn.setReadTimeout(8000);
     conn.connect();
     if(200==conn.getResponseCode()){
      //正常連接
      InputStream is=conn.getInputStream();
      //Bitmap bitmap=BitmapFactory.decodeStream(is);
      FileOutputStream fileOutputStream=new FileOutputStream(file);
      int len;
      byte[] b=new byte[1024];
      while ((len=is.read(b))!=-1) {
       fileOutputStream.write(b,0,len);
      }
      fileOutputStream.close();
      Bitmap bitmap=BitmapFactory.decodeFile(file.getAbsolutePath());
      fileOutputStream.flush();
      Message msg=Message.obtain();
      msg.what=0x123;
      msg.obj=bitmap;
      handler.sendMessage(msg);
     }
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   };
  }.start();
 }
}

這個圖片解析實現了圖片的緩存,想要再一次加載圖片的時候,就可以到緩存的文件中得到圖片,就可以減少內存的使用~

這個圖片我是放在服務器端的這個目錄下\apache-tomcat-7.0.37\webapps\upload,從服務器上可以下載這個圖片,然后保存在文件中~

4.最后,把文本和圖片加載出來

private Handler handler=new Handler(){
 public void handleMessage(android.os.Message msg) {
  if(msg.what==0x123){
   Bitmap bitmap=(Bitmap) msg.obj;
   iv.setImageBitmap(bitmap);
  }
  else if(msg.what==0x124){
   String text=(String) msg.obj;
   tv.setText(text);
  }
 };
};

效果圖我就不貼了,知道代碼怎么寫就行~

完整MainActivity代碼如下:

public class MainActivity extends Activity {
 private ImageView iv;
 private TextView tv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  iv=(ImageView) findViewById(R.id.iv);
  tv=(TextView) findViewById(R.id.tv);
 }
 private Handler handler=new Handler(){
  public void handleMessage(android.os.Message msg) {
   if(msg.what==0x123){
    Bitmap bitmap=(Bitmap) msg.obj;
    iv.setImageBitmap(bitmap);
   }
   else if(msg.what==0x124){
    String text=(String) msg.obj;
    tv.setText(text);
   }
  };
 };
 //文本解析
 public void click2(View view){
  new Thread(){
   public void run() {
    try {
     URL url2=new URL("http://www.baidu.com");
     HttpURLConnection conn=(HttpURLConnection) url2.openConnection();
     conn.setRequestMethod("GET");
     conn.setConnectTimeout(8000);
     conn.setReadTimeout(8000);
     conn.connect();
     if(conn.getResponseCode()==200){
      InputStream inputStream=conn.getInputStream();
      ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
      byte[]b=new byte[512];
      int len;
      while ((len=inputStream.read(b))!=-1) {
       byteArrayOutputStream.write(b,0,len);
      }
      String text=new String(byteArrayOutputStream.toByteArray(),"UTF-8");
      Message msg=Message.obtain();
      msg.what=0x124;
      msg.obj=text;
      handler.sendMessage(msg);
     }
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   };
  }.start();
 }
 //圖片解析
 public void click(View view){
  final File file=new File(getCacheDir(),"2.png");
  if(file.exists()){
   System.out.println("使用緩存");
   Bitmap bitmap=BitmapFactory.decodeFile(file.getAbsolutePath());
   iv.setImageBitmap(bitmap);
  }else{
   new Thread(){
    public void run() {
     try {
      URL url=new URL("http://192.168.207.1:8090/2.png");
      System.out.println("使用網絡");
      HttpURLConnection conn=(HttpURLConnection) url.openConnection();
      conn.setRequestMethod("GET");
      conn.setConnectTimeout(8000);
      conn.setReadTimeout(8000);
      conn.connect();
      if(200==conn.getResponseCode()){
       //正常連接
       InputStream is=conn.getInputStream();
       //Bitmap bitmap=BitmapFactory.decodeStream(is);
       FileOutputStream fileOutputStream=new FileOutputStream(file);
       int len;
       byte[] b=new byte[1024];
       while ((len=is.read(b))!=-1) {
        fileOutputStream.write(b,0,len);
       }
       fileOutputStream.close();
       Bitmap bitmap=BitmapFactory.decodeFile(file.getAbsolutePath());
       fileOutputStream.flush();
       Message msg=Message.obtain();
       msg.what=0x123;
       msg.obj=bitmap;
       handler.sendMessage(msg);
      }
     } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    };
   }.start();
  }
 }
}

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

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android通信方式總結》、《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》

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

向AI問一下細節

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

AI

花莲市| 栾城县| 渭源县| 农安县| 兴业县| 扶风县| 虞城县| 四平市| 湘潭市| 木里| 鹤山市| 日照市| 正蓝旗| 沙雅县| 遵义县| 宝清县| 台北市| 宁远县| 五家渠市| 平南县| 沧州市| 金昌市| 合川市| 洪洞县| 安图县| 义乌市| 东平县| 休宁县| 莒南县| 新邵县| 安庆市| 信阳市| 连云港市| 沭阳县| 七台河市| 将乐县| 明水县| 咸阳市| 成武县| 财经| 红原县|