Activity文件
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView show_text;
private static final long READ_TIMEOUT = 60000;
//写入超时为60s
private static final long WRITE_TIMEOUT = 60000;
//连接超时为60s
private static final long CONNECT_TIMEOUT = 60000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button send_request = findViewById(R.id.send_request);
show_text = findViewById(R.id.show_text);
send_request.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.send_request){
setRequestWithHttpURLConnection();
}
}
private void setRequestWithHttpURLConnection() {
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client = new OkHttpClient();
//延长请求时间
// OkHttpClient client = new OkHttpClient.Builder()
// .readTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS)
// .writeTimeout(WRITE_TIMEOUT, TimeUnit.MILLISECONDS)
// .connectTimeout(CONNECT_TIMEOUT, TimeUnit.MILLISECONDS)
// .build();
Request request = new Request.Builder()
//指定服务器地址是本机
.url("http://192.168.1.107/get_data.xml")
.build();
Response response = client.newCall(request).execute();
String str = response.body().string();
parseXMLWithPull(str);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void parseXMLWithPull(String xmlData) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
//传入解析数据
xmlPullParser.setInput(new StringReader(xmlData));
int eventType = xmlPullParser.getEventType();
//存储数据
String id = "";
String name = "";
String version = "";
//不等于 END_DOCUMENT表示解析还未完成
while (eventType != XmlPullParser.END_DOCUMENT){
//节点位置
String nodeName = xmlPullParser.getName();
switch (eventType){
case XmlPullParser.START_TAG:{
if ("id".equals(nodeName)){
id = xmlPullParser.nextText();
}else if ("name".equals(nodeName)){
name = xmlPullParser.nextText();
}else if ("version".equals(nodeName)){
version = xmlPullParser.nextText();
}
break;
}
case XmlPullParser.END_TAG:{
if ("app".equals(nodeName)){
Log.d("MainLook", "id is"+id);
Log.d("MainLook", "name is"+name);
Log.d("MainLook", "version is"+version);
}
break;
}
default:
break;
}
//调用next()方法获取下一个节点
eventType = xmlPullParser.next();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
运行结果