获取网络请求

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:我们自己分析代码应该怎么写? * 1:有效网址 http://api.expoon.com/AppNews/getNewsList/type/1/p/1 * 2: */ public class MainActivity extends AppCompatActivity implements View.OnClickListener { private String mUrl = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1"; private String mImageUrl = "https://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(); } }

你可能感兴趣的:(获取网络请求)