android service前台服务器,Android网络前台向服务端页面请求数据
这是一个android前台向服务端网站请求少量数据的小例子。
首先设计好服务端,再来写安卓前端。
一:服务端
新建动态网站,在java包下新建一个类继承HttpServlet父类,重写doGet()方法,向客户端输出文字。
部署这个类,把这个类的包和class文件复制到WEB-INF的classes目录下,在web.xml文件配置这个文件的网络路径。
Internet文件的代码:
package android;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Internet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO 自动生成的方法存根
//super.doGet(req, resp);
resp.setContentType("text/html;charset=utf-8");
PrintWriter print=resp.getWriter();
print.println("你好!");//客户端可以接收得到,本网页显示
print.println("上海!");
print.flush();//flush()不可以少
System.out.println("瓜瓜!");//客户端接收不到,本网页不显示,输出在控制台
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO 自动生成的方法存根
super.doPost(req, resp);
}
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO 自动生成的方法存根
super.service(arg0, arg1);
}
@Override
public void init() throws ServletException {
// TODO 自动生成的方法存根
super.init();
}
}
配置的web.xml
a
android.Internet
a
/b
访问路径:
至此服务端的书写已经成功,接下来开始安卓端的书写。
二:安卓手机端
编写主线程,处理子线程拿到数据后对数据的展示。
编写子线程,用于连接服务器端拿到数据,并发送给主线程。
附上代码:
activity_main.xml只有一个控件
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "
android:textAppearance="?android:attr/textAppearanceLarge" />
主线程MainActivity.java
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;
import com.internethttp.R;
public class MainActivity extends ActionBarActivity {
String url="http://ly-and-tl.uicp.cn:42696/AndroidServer/b";//服务端的servlet页面网址,在web.xml页面中已配置
TextView tv;
Handler handler;
@SuppressLint("HandlerLeak") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView) findViewById(R.id.textView);
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if(msg.what==3){//后台发送消息切换回主线程后的处理
CharSequence ss=(CharSequence)msg.obj;//拿到消息的包裹信息
System.out.println(ss+"MainActivity");
if(ss!=null){
tv.setText(ss);//只能在主线程更新UI
}
}
}
};
new HttpThread(url,handler).start();
}
}
子线程HttpThread.java
public class HttpThread extends Thread {
String url;
Handler handler;
HttpThread(String url,Handler hand){
this.url=url;
handler=hand;
}
@Override
public void run() {//向后台请求数据
// TODO Auto-generated method stub
//super.run();
URL httpUrl;
try {
httpUrl=new URL(url);
HttpURLConnection conn=(HttpURLConnection)(httpUrl.openConnection());
//打开服务端的某个页面链接就相当于自动调用doGet()方法
conn.setReadTimeout(5000);
//5000秒内不返回就报错
conn.setRequestMethod("GET");
//bufferReader适合中文类,HttpURLConnection的getInputStream()方法返回一个InputStream对象,
//InputStreamReader接收InputStream对象能实例化一个InputStreamReader,
//bufferedReader能接收一个InputStreamReader对象实例化自己
BufferedReader buff=new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb=new StringBuffer();
String str;
while((str=buff.readLine())!=null){
//readLine()返回String对象,从后台拿到数据存到String对象
sb.append(str);
}
System.out.println(sb+"HttpThread");
Message msg=handler.obtainMessage(3);
msg.obj=sb;
handler.sendMessage(msg);
//发送到主线程,立刻切换线程
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
最后别忘了对网络权限的设置。
运行效果:
android service前台服务器,Android网络前台向服务端页面请求数据相关推荐
- android service是什么,Android service是什么 Android service详解
Android service是什么 Android service详解 时间:2017-04-06 来源:Android开发学习网 什么是Android Service? service是A ...
- android 仿微信demo————注册功能实现(服务端)
android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...
- android 仿微信demo————登录功能实现(服务端)
android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...
- android客户端访问服务端,服务端返回json数据
json这里选用了fast-json 先看服务端代码如下 package novelserver.servlet;import java.io.IOException; import java.io. ...
- 并发请求多 服务器响应慢 post,从服务端视角看高并发问题
所谓服务器大流量高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈. 服务端看高并发 服务端处理请求需要耗费服务端的资源,比如能同时开启的 ...
- 在以TCP为连接方式的服务器中,为什么在服务端设计当中需要考虑心跳?
https://www.zhihu.com/question/35013918 在以TCP为连接方式的服务器中,为什么在服务端设计当中需要考虑心跳? 这个心跳包除了告知服务端我在线,还有其他作用吗?比 ...
- [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端
[图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端 一般开发Web Service,是选写服务端,再根据生成的WSDL文件生成客户端.看过一本SOA的书中 ...
- Qt:Qt实现Winsock网络编程—TCP服务端和客户端通信(多线程)
Qt实现Winsock网络编程-TCP服务端和客户端通信(多线程) 前言 感觉Winsock网络编程的api其实和Linux下网络编程的api非常像,其实和其他编程语言的网络编程都差不太多.博主用Qt ...
- java-php-python-springboot网络记账设计服务端计算机毕业设计
java-php-python-springboot网络记账设计服务端计算机毕业设计 java-php-python-springboot网络记账设计服务端计算机毕业设计 本源码技术栈: 项目架构:B ...
最新文章
- javascript中重要概念-闭包-深入理解
- Python列表解析式总结
- c语言电子地图程序,C语言 电子地图信息
- 【Flink】Flink消费Kafka数据时指定offset的五种方式
- 提防最近一些公司的小九九!
- 孙鑫VC学习笔记:第七讲 对话框
- You must install signalwire-client-c to build mod_signalwire
- 基于dde-top-panel+tint2+plank+conky的Deepin(深度)桌面美化
- mysql修改表只读属性_VF设置的疑问
- 【Docker】Failed to get D-Bus connection: Operation not permitted解决
- 实现自己人生小目标之微信抢红包项目
- matlab画图三维立体,matlab的三维图形绘制
- 力扣每日一题第495题提莫攻击
- 网站网页中加入各种分享按钮功能 百度分享
- 笔记本安装黑苹果 MacOS Catalina 10.15
- 电脑无法打开计算机是怎么回事,电脑的office软件突然打不开怎么办
- 刷脸支付帮助线下实体经济突破营销困境
- 版本控制:git和svn
- Fast unfolding of communities in large networks
- 一文读懂成交量、换手率