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が学習した後、私はあなたと共有します〜さようなら