一.在Tomcat上发布文件
1.在Tomcat的webapps\ROOT的目录下写一个名为data.xml的文件,内容如下:
<app>
<car>
<id>1</id>
<money>99</money>
</car>
<car>
<id>2</id>
<money>24</money>
</car>
<car>
<id>3</id>
<money>53</money>
</car>
<car>
<id>4</id>
<money>1</money>
</car>
</app>
2.执行Tomcat的bin目录下的Tomcat9.exe程序,将我们写好的文件发布出去(注意:Tomcat9.exe程序不能关闭)
3.在浏览器上访问该文件
通过http://192.168.1.105:8080/data.xml访问data.xml文件,其中192.168.1.105为电脑的ip地址,如果出现下图:
则表示成功
二.使用HTTPURLConnection访问网络
(一) 项目结构如下:
(二)项目代码如下:
-
Car类
public class Car { private String carID; private String carmoney; public Car() { } public Car(String carID, String carmoney) { this.carID = carID; this.carmoney = carmoney; } public String getCarID() { return carID; } public void setCarID(String carID) { this.carID = carID; } public String getCarmoney() { return carmoney; } public void setCarmoney(String carmoney) { this.carmoney = carmoney; } }
-
HttpURLConn类中
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpURLConn { public static void sendRequestWithHttpURLConnection(final String address, final showResponse s){ new Thread(new Runnable() { @Override public void run() { HttpURLConnection connection = null; BufferedReader reader = null; try { //获取HttpURLConnection实例并传入目标网络地址 URL url = new URL(address); connection = (HttpURLConnection)url.openConnection(); //设置HTTP的请求方式 connection.setRequestMethod("GET"); //设置连接超时时间 connection.setConnectTimeout(8000); //设置读取超时时间 connection.setReadTimeout(8000); //获得服务器返回的输入流 InputStream in = connection.getInputStream(); //对输入流进行读取 reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while((line = reader.readLine())!=null){ response.append(line); } //将response的值传给showResponse s.start(response.toString()); } catch (Exception e) { e.printStackTrace(); s.error(e); }finally { if(reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } if(connection!=null){ connection.disconnect(); //将HTTP连接关闭 } } } } }).start(); } }
-
showResponse接口
public interface showResponse { void start(String response); void error(Exception e); }
-
analysisbypull类
import com.example.pullproj.model.Car; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; public class analysisbypull { public static List<Car> Receive(String response){ List<Car> carList = new ArrayList<>(); try { //获取XmlPullParserFactory实例 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); //通过XmlPullParserFactory实例获取XmlPullParser对象 XmlPullParser xmlPullParser = factory.newPullParser(); //调用XmlPullParser的setInput方法将XML数据放置进去 xmlPullParser.setInput(new StringReader(response)); //得到当前解析事件 int eventType = xmlPullParser.getEventType(); Car car = null; //如果eventType=XmlPullParser.END_DOCUMENT则表示解析完成 while (eventType!=XmlPullParser.END_DOCUMENT){ //获取节点的名称 String nodeName = xmlPullParser.getName(); switch (eventType){ case XmlPullParser.START_TAG:{ if("car".equals(nodeName)){ car = new Car(); } else if("id".equals(nodeName)){ try { car.setCarID(xmlPullParser.nextText()); } catch (IOException e) { e.printStackTrace(); } } else if("money".equals(nodeName)){ try { car.setCarmoney(xmlPullParser.nextText()); } catch (IOException e) { e.printStackTrace(); } carList.add(car); } break; } case XmlPullParser.END_TAG: break; } try { eventType=xmlPullParser.next(); } catch (IOException e) { e.printStackTrace(); } } } catch (XmlPullParserException e) { e.printStackTrace(); } return carList; } }
-
MainActivity类
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import com.example.pullproj.analysis.analysisbypull; import com.example.pullproj.http.HttpURLConn; import com.example.pullproj.http.showResponse; import com.example.pullproj.model.Car; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button button_pull; List<Car> carList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button_pull = findViewById(R.id.button_pull); button_pull.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.button_pull: HttpURLConn.sendRequestWithHttpURLConnection("http://192.168.123.98:8080/data.xml", new showResponse() { @Override public void start(String response) { //将response传给analysisbypull类的Receive方法并接收返回的carList carList= new ArrayList<>(analysisbypull.Receive(response)); //遍历carList for(Car c : carList){ Log.d("carid:",c.getCarID()); Log.d("carmoney",c.getCarmoney()); } } @Override public void error(Exception e) { Log.d("error",e.toString()); } }); break; default: break; } } }
(三) 运行效果图
内容参考自《第一行代码》