獲取網路請求
package com.example.lvxinxin.androidzxdayone;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
-
今天的內容很重要
-
1:JSON解析
-
2:Handler Looper MessageQueue Message
-
-
HTTPURLConnection+URL(獲取網址裡面的資料)
-
1:有網路就得加許可權 android.permission.INTERNET
-
2:我們自己分析程式碼應該怎麼寫?
-
2:
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private String mUrl = “
private String mImageUrl = “http://img.my.csdn.net/uploads/201407/26/1406383265_8550.jpg”;
private String mPostUrl = “http://tcc.taobao.com/cc/json/mobile_tel_segment.htm”;
private Button mSendBtn,mSendImage,mPostBtn;
private TextView mGetText;
private ImageView mImage;
@SuppressLint(“HandlerLeak”)
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
int what = msg.what;
switch (what) {
case 1:
String string = msg.obj.toString();
mGetText.setText(string);
break;
case 2:
Bitmap bt = (Bitmap) msg.obj;
mImage.setImageBitmap(bt);
break;
case 3:
String string1 = msg.obj.toString();
mGetText.setText(string1);
break;
}
}
};@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}//初始化元件
private void initViews() {
mSendBtn = findViewById(R.id.Send_Btn);
mSendBtn.setOnClickListener(this);
mGetText = findViewById(R.id.Get_Text);
mSendImage = findViewById(R.id.Send_Image_Btn);
mSendImage.setOnClickListener(this);
mImage = findViewById(R.id.Get_Image);
mPostBtn = findViewById(R.id.Send_Post_Btn);
mPostBtn.setOnClickListener(this);
}private void getNetData() {
new Thread(new Runnable() {
@Override
public void run() {
try {
//定位一個網址服務
URL url = new URL(mUrl);
//由一個有效的網址服務返回這個物件
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//設定請求方式
connection.setRequestMethod(“GET”);
connection.setConnectTimeout(5000);
InputStream stream = connection.getInputStream();
String inputStr = getInputStr(stream);
Message msg = new Message();
//這個what是標記的意思 Handler物件只能有一個 Message是有多個的
msg.what = 1;
msg.obj = inputStr;
mHandler.sendMessage(msg);
Log.e(“網路字串”, inputStr);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();}
//把流轉成字串
private String getInputStr(InputStream stream) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
StringBuffer sb = new StringBuffer();
String str = null;
while ((str = br.readLine()) != null) {
sb.append(str);
}
return sb.toString();
}private void getImageData(){
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(mImageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if (connection.getResponseCode() ==200){
InputStream stream = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(stream);
Message msg = new Message();
msg.what = 2;
msg.obj = bitmap;
mHandler.sendMessage(msg);
}} catch (Exception e) { e.printStackTrace(); } } }).start();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Send_Btn:
getNetData();
break;
case R.id.Send_Image_Btn:
getImageData();
break;
case R.id.Send_Post_Btn:
getPostData();
break;
}
}
//Post請求方式
private void getPostData(){
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(mPostUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(“POST”);
//開啟可以想外輸出的許可權
connection.setDoOutput(true);
OutputStream outputStream = connection.getOutputStream();
String canshu = “tel=15850781443”;
//把字串轉換成位元組
outputStream.write(canshu.getBytes());
if (connection.getResponseCode() ==200){
InputStream stream = connection.getInputStream();
String inputStr = getInputStr(stream);
Message msg = new Message();
//這個what是標記的意思 Handler物件只能有一個 Message是有多個的
msg.what = 3;
msg.obj = inputStr;
mHandler.sendMessage(msg);
}} catch (Exception e) { e.printStackTrace(); } } }).start();
}
}