Android 에서 HTTP 를 통 해 날씨 API 가 져 오기(코드 분석)
29353 단어 Android
MainActivity.java
import com.example.http.HTTPRetrieval;
import com.example.http.JSONParser;
import com.example.http.WeatherInfo;
public class MainActivity extends AppCompatActivity {
private TextView txt;
private Handler hd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView) findViewById(R.id.textView1);
hd = new Handler();
//
HttpThread ht = new HttpThread();
ht.start();
}
public class HttpThread extends Thread {
@Override
public void run() {
super.run();
HTTPRetrieval hr = new HTTPRetrieval();
//
String weatherString = hr.HTTPWeatherGET("101270101");
WeatherInfo wi = new WeatherInfo();
JSONParser jp = new JSONParser();
// JSON JSON
wi = jp.WeatherParse(weatherString);
final WeatherInfo finalWi = wi;
// UI
hd.post(new Runnable() {
@Override
public void run() {
txt.setText(finalWi.getCity() + finalWi.getHighTemp() + finalWi.getLowTemp() + finalWi.getDescription() + finalWi.getPublishTime());
}
});
}
}
}
HTTP Retrieval.java(HTTP 처리 용)
package com.example.http;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HTTPRetrieval {
public String HTTPWeatherGET(String cityCode) {
String res = "";
// StringBuilder + ,
StringBuilder sb = new StringBuilder();
String urlString = "http://www.weather.com.cn/adat/cityinfo/" + cityCode + ".html";
try {
// URL url
URL url = new URL(urlString);
// connection
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setConnectTimeout(10000);
// InputStreamReader
InputStreamReader isr = new InputStreamReader(httpURLConnection.getInputStream());
//
BufferedReader br = new BufferedReader(isr);
String temp = null;
//
while ( (temp = br.readLine()) != null) {
sb.append(temp);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
res = sb.toString();
return res;
}
}
JSONPARSER.java(JSON 데이터 분석 에 사용)
package com.example.http;
import org.json.JSONException;
import org.json.JSONObject;
public class JSONParser {
public WeatherInfo WeatherParse (String weatherString) {
WeatherInfo wi = new WeatherInfo();
try {
JSONObject jo = new JSONObject(weatherString);
JSONObject joWeather = jo.getJSONObject("weatherinfo");
wi.setCity(joWeather.getString("city"));
wi.setLowTemp(joWeather.getString("temp2"));
wi.setHighTemp(joWeather.getString("temp1"));
wi.setDescription(joWeather.getString("weather"));
wi.setPublishTime(joWeather.getString("ptime"));
} catch (JSONException e) {
e.printStackTrace();
}
return wi;
}
}
WeatherInfo.java(
package com.example.http;
public class WeatherInfo {
//
private String city;
private String description;
private String highTemp;
private String lowTemp;
private String publishTime;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getHighTemp() {
return highTemp;
}
public void setHighTemp(String highTemp) {
this.highTemp = highTemp;
}
public String getLowTemp() {
return lowTemp;
}
public void setLowTemp(String lowTemp) {
this.lowTemp = lowTemp;
}
public String getPublishTime() {
return publishTime;
}
public void setPublishTime(String publishTime) {
this.publishTime = publishTime;
}
}
AndroidManifest.xml(이 프로필 에서 네트워크 권한 열기)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.examplehttp">
//
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.