Android開発、httpネットワークリクエストウェブページの基本操作

httpネットワークリクエストの基本操作

Androidプロジェクトの開発では、サーバーから提供されたテキスト、画像、音声、ビデオ、Webページなどをクライアントに送信し、ユーザーの操作をサーバーにフィードバックする必要があります。これには、ネットワーク送信プロトコルの知識が含まれます。 。
httpの一般的な単純なリクエストメソッドはGETとPOSTです。より高度なメソッドはほとんどのタイプのデータを送信でき、Content-Typeでマークされます。
この記事では、Baiduホームページリクエストをクライアントインターフェイスに取得するための簡単なリクエストを紹介します。私もかわいい初心者です。エラーが発生した場合は、修正してください。ありがとうございます。
URLコンテンツの取得は、通常、次の手順で構成され
ます。1.URLをインスタンス化します。

URL url = new URL("http://www.baidu.com");

2.伝送接続を確立します

HttpUrlConnection conn = (HttpUrlConnection)url.openConnection();

3.読み取りタイムアウト制限を設定します

conn.setReaderTimeOut(5000);

4.リクエストメソッドを設定します(Webページリクエストは通常​​getを使用します)

conn.setRequestMethod("GET");

5.バイトストリームを取得します

InputStream stream = conn.getInputStream();

6.バイトストリームを文字ストリームに変換します

BufferReader reader = new BufferReader(new 
InputStreamReader(stream));

7.バッファを確立し、文字ストリームのすべての内容をに読み込みます。

String getStrFromReader = null;
StringBuffer stringBuffer = new StringBuffer();
//只要不为空,说明没有读取完
while((getStrFromReader=reader.readline())!=null){
    
    
    stringBuffer.append(getStrFromReader);
}

次に、Webページから取得したコンテンツが一時的にStringBufferに格納され、使用される場合はtoStringメソッドが呼び出されます
。————————————————————————— — —
具体的な操作は次のとおりです
。1。プロジェクトのAndroidManifest.xml構成ファイルを開き、タグを追加して、ネットワークアクセス許可を開きます。

<uses-permission android:name=
android.permission.INTERNET”/>


2.URLクラスhttpurl.javaを確立します

package com.ilikelxystill.fuxi;

import android.util.Log;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class httpurl {
    
    
      public static String sendUrl(String sendurl){
    
    
          try {
    
    
              //实例化url
              URL url = new URL(sendurl);
              //建立并打开连接
              HttpURLConnection conn = (HttpURLConnection)url.openConnection();
              //设置读取超时时间
              conn.setReadTimeout(5000);
              conn.setRequestMethod("GET");//一般请求网页方式用get
              //获得连接的读入字节流
              InputStream stream  = conn.getInputStream();
              //转化为字符流
              BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
              //创建缓冲区域buff,用于存放所有从reader中获取的信息
              StringBuffer stringBuffer = new StringBuffer();
              String get_from_reader = null;
              while ((get_from_reader=reader.readLine())!=null){
    
    //按行读取
                  stringBuffer.append(get_from_reader);
              }
              Log.i("nana",stringBuffer.toString());
              return stringBuffer.toString();
          } catch (MalformedURLException e) {
    
    
              e.printStackTrace();
          } catch (IOException e) {
    
    
              e.printStackTrace();
          }
          return "请求失败!!!";
      }
}

3.Webページのxmlファイルを表示します

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".InternetActivity">
     <WebView
         android:id="@+id/webview"
         android:layout_width="match_parent"
         android:layout_height="match_parent"></WebView>
</LinearLayout>

4.
Activity.javaアクティビティでは、SendUrlTask​​クラスを書き直し、関連するメソッドを書き直して呼び出す必要があります。

package com.ilikelxystill.fuxi;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;

public class InternetActivity extends AppCompatActivity {
    
    
    private WebView webview;
    private SendUrlTask sendUrlTask;//发送url任务
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_internet);
        init_web();
    }
    public void init_web(){
    
    
        webview = (WebView)findViewById(R.id.webview);
        sendUrlTask = new SendUrlTask("http://www.baidu.com");
        sendUrlTask.execute();//执行任务
    }
    //避免内存泄漏,重写 Destroy方法


    @Override
    protected void onDestroy() {
    
    
        super.onDestroy();
        if(sendUrlTask!=null){
    
    
            sendUrlTask.cancel(true);
        }
    }

    private class SendUrlTask extends AsyncTask<Void,Void,String>{
    
    
        public String Url;
        public SendUrlTask(String c_url){
    
    
            Url = c_url;
        }
        @Override
        protected String doInBackground(Void... voids) {
    
    
            //进行网络请求的操作
            return httpurl.sendUrl(Url);
        }

        @Override
        protected void onPostExecute(String s) {
    
    
            super.onPostExecute(s);
            webview.loadData(s,"text/html;charset=utf-8",null);//开始加载
        }
    }
}

プログラムを実行すると、Baiduのホームページを取得できますが、一般的な開発では、ボレー、レトロフィット、Okhttpなどの便利なオープンソースフレームワークがあります。Xiaobaiが学習した後、私はあなたと共有します〜さようなら

おすすめ

転載: blog.csdn.net/qq_41904106/article/details/108306472