解析网易字符串笔记
以HttpURLConnection请求网站数据,JSON解析,ListAdapter展示
新建class
News
public class News {
String title;
String mtime;
String url;
public News(){}
public News(String title, String mtime, String url) {
this.title = title;
this.mtime = mtime;
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getMtime() {
return mtime;
}
public void setMtime(String mtime) {
this.mtime = mtime;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
NewsJson
public class NewsJson {
public static List<News> getNews(String newsJson){
List<News> Data=new ArrayList<News>();
try {
JSONObject jso = new JSONObject(newsJson);
JSONArray newslist =jso.getJSONArray("T1348647853363");
for(int i=0;i<newslist.length();i++){
JSONObject jsd = newslist.getJSONObject(i);
News news =new News(jsd.getString("title"),jsd.getString("mtime"),jsd.getString("url"));
Data.add(news);
}
} catch (JSONException e) {
e.printStackTrace();
}
return Data;
}
}
HttpclientClass
public class HttpclientClass {
public static String getDataString(String urlPath){
String datastring ="";
//1.创造HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
//2.创造HttpGet请求对象(访问的服务器地址)
HttpGet httpGet = new HttpGet(urlPath);
//3.执行请求,服务器响应结果放在请求对象中
try {
HttpResponse response = httpClient.execute(httpGet);
//4.根据状态码判断请求结果,200表示正常
if(response.getStatusLine().getStatusCode()==200){
//5.取出entity里的数据
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity,"utf-8");
datastring=result;
Log.i("LXH", "result: "+result );
}
} catch (IOException e) {
e.printStackTrace();
}
return datastring;
}
}
HttpURLconnectionClass
public class HttpURLconnectionClass {
public static String getData(String urlpath){
String data="";
try {
URL url=new URL(urlpath);
URLConnection conn=url.openConnection();
HttpURLConnection httpConn =(HttpURLConnection) conn;
int responseCode =httpConn.getResponseCode();
if (responseCode==200){
InputStream is =httpConn.getInputStream();
data = StreamtoString(is);
}
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
public static String StreamtoString(InputStream is){
String str="";
StringBuilder builder =new StringBuilder();
try {
BufferedReader br=new BufferedReader(new InputStreamReader(is,"UTF-8"));
String con;
while ((con=br.readLine())!=null){
builder.append(con);
}
br.close();
return builder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
NewsAdapter
public class NewsAdapter extends BaseAdapter {
Context context;
List<News> list;
LayoutInflater mInflater;
public NewsAdapter(Context context, List<News> list) {
this.context = context;
this.list = list;
mInflater =LayoutInflater.from(context);
}
public List<News> getList() {
return list;
}
@Override
public int getCount(){
return list.size();
}
@Override
public Object getItem(int i){
return list.get(i);
}
@Override
public long getItemId(int i){
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup){
View layout =mInflater.inflate(R.layout.newshow,null);
TextView title=layout.findViewById(R.id.tvNewTitle);
TextView data=layout.findViewById(R.id.tvNewData);
title.setText(list.get(i).getTitle());
data.setText(list.get(i).getMtime());
return layout;
}
}
NewsAdapter
public class NewsAdapter extends BaseAdapter {
Context context;
List<News> list;
LayoutInflater mInflater;
public NewsAdapter(Context context, List<News> list) {
this.context = context;
this.list = list;
mInflater =LayoutInflater.from(context);
}
public List<News> getList() {
return list;
}
@Override
public int getCount(){
return list.size();
}
@Override
public Object getItem(int i){
return list.get(i);
}
@Override
public long getItemId(int i){
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup){
View layout =mInflater.inflate(R.layout.newshow,null);
TextView title=layout.findViewById(R.id.tvNewTitle);
TextView data=layout.findViewById(R.id.tvNewData);
title.setText(list.get(i).getTitle());
data.setText(list.get(i).getMtime());
return layout;
}
}
新建Activity
Main22Activity :用Httpclient获取数据+JSON解析
public class Main22Activity extends AppCompatActivity {
ListView lvNew;
List<News> data;
Handler handler;
String netdata;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news);
lvNew=findViewById(R.id.lvNew);
handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
//处理消息
if(msg.what==1){
data = NewsJson.getNews((String)msg.obj);
if(data==null){
return;
}
NewsAdapter adapter = new NewsAdapter(getApplicationContext(),data);
lvNew.setAdapter(adapter);
}
}
};
lvNew.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String url =data.get(i).getUrl();
if (url!=null&&url.length()!=0){
Toast.makeText(getApplicationContext(),url, Toast.LENGTH_LONG).show();
Uri uri = Uri.parse(url);
try {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}else {
Toast.makeText(getApplicationContext(),"url=空",Toast.LENGTH_LONG).show();
}
}
});
new Thread(){
@Override
public void run() {
super.run();
netdata=HttpclientClass.getDataString("http://c.m.163.com/nc/article/headline/T1348647853363/0-40.html");
Log.i("netdata","access"+netdata);
Message msg =Message.obtain();
msg.what=1;
msg.obj=netdata;
handler.sendMessage(msg);
}
}.start();
}
}
Main33Activity :用HttpURLconnection获取数据
public class Main33Activity extends AppCompatActivity {
TextView tvHttpClient;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
tvHttpClient=findViewById(R.id.tvHttpClient);
handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
//处理消息
if(msg.what==1){
String response=(String)msg.obj;
tvHttpClient.setText(response);
}
}
};
new Thread(){
@Override
public void run() {
super.run();
String netdata="";
netdata=HttpURLconnectionClass.getData("http://c.m.163.com/nc/article/headline/T1348647853363/0-40.html");
Log.i("LXH","access"+netdata);
Message msg =Message.obtain();
msg.what=1;
msg.obj=netdata;
handler.sendMessage(msg);
}
}.start();
}
}
Main44Activity :用HttpURLconnection获取数据+JSON解析
public class Main44Activity extends AppCompatActivity {
ListView lvNew;
List<News> data;
Handler handler;
String netdata;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news);
lvNew=findViewById(R.id.lvNew);
handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.what==1){
data = NewsJson.getNews((String)msg.obj);
if(data==null){
return;
}
NewsAdapter adapter = new NewsAdapter(getApplicationContext(),data);
lvNew.setAdapter(adapter);
}
}
};
lvNew.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String url =data.get(i).getUrl();
if (url!=null&&url.length()!=0){
Toast.makeText(getApplicationContext(),url, Toast.LENGTH_LONG).show();
Uri uri = Uri.parse(url);
try {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}else {
Toast.makeText(getApplicationContext(),"url=空",Toast.LENGTH_LONG).show();
}
}
});
new Thread(){
@Override
public void run() {
super.run();
netdata=HttpURLconnectionClass.getData("http://c.m.163.com/nc/article/headline/T1348647853363/0-40.html");
Log.i("netdata","access"+netdata);
Message msg =Message.obtain();
msg.what=1;
msg.obj=netdata;
handler.sendMessage(msg);
}
}.start();
}
}
MainActivity :用Httpclient获取数据
public class MainActivity extends AppCompatActivity {
Button button1;
Button button2;Button button3;Button button4;
TextView textView1;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView1 = findViewById(R.id.TextView1);
button1 = findViewById(R.id.button1);
button2 = findViewById(R.id.button2);
button3 = findViewById(R.id.button3);
button4 = findViewById(R.id.button4);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this, Main22Activity.class);
startActivity(intent);
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this, Main33Activity.class);
startActivity(intent);
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this, Main44Activity.class);
startActivity(intent);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RunThread();
}
});
handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.what==1){
String response=(String)msg.obj;
textView1.setText(response);
}
}
};
}
private void RunThread(){
new Thread(){
@Override
public void run() {
super.run();
String netdata="";
netdata=HttpclientClass.getDataString("http://c.m.163.com/nc/article/headline/T1348647853363/0-40.html");
Log.i("LXH","access"+netdata);
Message msg =Message.obtain();
msg.what=1;
msg.obj=netdata;
handler.sendMessage(msg);
}
}.start();
}
}
XML
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="HttpClient的GET" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="HttpClient+JSON" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="HttpURLConnection的GET" />
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="HttpURLConnection+JSON" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/TextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="" />
</ScrollView>
</LinearLayout>
main3.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tvHttpClient"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="" />
</ScrollView>
</LinearLayout>
news.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/lvNew"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
newshow.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvNewTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/tvNewData"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
添加权限
useLibrary 'org.apache.http.legacy'
<uses-permission android:name="android.permission.INTERNET" />
成果
有需要项目: link.也可以私信邮箱我看到就发
欢迎指错