package com.example.com.diyizhoumoni; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MainActivity extends AppCompatActivity { private TextView text1; private TextView text2; private TextView text3; private Button but1; private Button but2; private String s; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text1 = findViewById(R.id.text1); text2 = findViewById(R.id.text2); text3 = findViewById(R.id.text3); but1 = findViewById(R.id.but1); but2 = findViewById(R.id.but2); but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Mytask mytask = new Mytask(); mytask.execute(); } }); } class Mytask extends AsyncTask<String,Void,String >{ @Override protected String doInBackground(String... strings) { try { URL url = new URL("http://www.toutiao.com/stream/widget/local_weather/data/?city=%E5%8C%97%E4%BA%AC"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); if (urlConnection.getResponseCode()==200){ InputStream inputStream = urlConnection.getInputStream(); //调用工具类中的静态方法 return statemstring(inputStream); }else if(urlConnection.getResponseCode()==301||urlConnection.getResponseCode()==302){ String newUrl=urlConnection.getHeaderField("location"); URL u=new URL(newUrl); HttpURLConnection urlConnection1 = (HttpURLConnection) u.openConnection(); urlConnection1.setRequestMethod("GET"); urlConnection1.setReadTimeout(5000); urlConnection1.setConnectTimeout(5000); if (urlConnection1.getResponseCode()==200){ InputStream inputStream = urlConnection1.getInputStream(); return statemstring(inputStream); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); GetDataBean getData = gson.fromJson(s, GetDataBean.class); text1.setText(getData.getData().getWeather().getDat_low_temperature()+""); } } public String statemstring(InputStream inputStream){ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] b = new byte[1024]; int len = 0; try { while((len=inputStream.read(b))!=-1){ outputStream.write(b,0,len); } s = outputStream.toString(); } catch (Exception e) { e.printStackTrace(); } return s; } } 注:在XML文件中配置权限
网络请求和UI更新
最新推荐文章于 2021-02-28 13:16:17 发布