客户端:
public class HttpUtil { //创建HttpClient对象 public static HttpClient httpClient = new DefaultHttpClient(); public static final String BASE_URL="http://xxx.xxxx.xx.xx:8080/ticket/"; // public static final String BASE_URL="http://xxx.xxxx.xx.xx:8080/apk/"; // public static final String BASE_URL = "www.baidu.com"; /** * * @param url 发送请求的Url * @return 服务器响应的字符串 * @throws Exception * @throws InterruptedException */ public static String getRequest(final String url) throws Exception { FutureTask<String> task = new FutureTask<String>( new Callable<String>() { @Override public String call() throws Exception { //创建HttpGet对象 HttpGet get = new HttpGet(url); //发送GET请求 HttpResponse response = httpClient.execute(get); //若是服务器响应成功 if(response.getStatusLine(). getStatusCode() == 200) { //获取服务器响应的字符串 String result = EntityUtils. toString(response.getEntity()); return result; } return null; } } ); new Thread(task).start(); return task.get(); } /** * * @param url 发送请求的url * @param rawParams 请求参数 * @return 响应的字符串 * @throws Exception */ public static String postRequest(final String url, final Map<String,String> rawParams) throws Exception { // ExecutorService exec=Executors.newCachedThreadPool(); // FutureTask<String> task = new FutureTask<String>( // new Callable<String>() { // @Override // public String call() throws Exception { //创建HttpPost对象 HttpPost post = new HttpPost(new URI(url)); //对较多的传递参数进行封装、 List<NameValuePair> params = new ArrayList<NameValuePair>(); for(String key : rawParams.keySet()) { //封装请求参数 params.add(new BasicNameValuePair(key, rawParams.get(key))); } //设置请求参数 post.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); //发送post请求 HttpResponse response = httpClient.execute(post); //若是服务器响应成功 if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ //获取服务器响应的字符串 String result = EntityUtils.toString(response.getEntity(),HTTP.UTF_8); return result; }else{ return "-1"; } } // } // ); // new Thread(task).start(); // return task.get(); // } }
注意:连接本地服务器时,最好使用ipv4地址而不是localhost。
服务端:
写一个servlet接收,判断客户端发送的是什么请求uri
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String uri = request.getRequestURI(); uri = uri.substring(uri.lastIndexOf("/")); System.out.println("uri: " + uri); if("/hotStation.do".equals(uri)) { doHotStationList(request, response); } if("/stationList.do".equals(uri)) { doStationList(request, response); } }
如doHotStationList是这样写的:
public void doHotStationList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); List<String> hotStationList = StationService.getHostStationList(); JSONArray jsonArray = JSONArray.fromObject(hotStationList); System.out.println("传给客户端:" + jsonArray.toString()); response.getWriter().println(jsonArray.toString()); }
我这里数据交互使用的是json.
客户端获取服务端传递过来的json数据再解析成pojo对象即可。
相关推荐
总之,Android客户端与服务端交互涉及网络请求、数据交换、错误处理等多个环节,GET方式登录只是其中一种基本的交互形式。理解并熟练掌握这些知识点对于Android开发者来说至关重要。通过学习该视频教程,开发者可以...
总的来说,Android客户端与服务端的交互主要依赖于HTTP协议,GET和POST是其核心方法。通过HttpURLConnection,我们可以灵活地构造请求并处理响应,实现客户端的功能。在实际开发中,还需要考虑错误处理、网络状态...
本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...
在Android应用开发中,"客户端+服务端"的架构模式是常见的设计方式,它涉及到Android客户端与远程服务器之间的数据通信和交互。这种模式允许应用程序在本地执行用户界面操作,同时利用服务器的计算能力和存储资源来...
在Android开发中,客户端与...通过理解和实践这些步骤,开发者可以构建出能够与服务器进行有效交互的Android客户端应用。在实际开发中,还需要考虑到网络状况、错误处理、数据缓存等更多细节,以提供更优秀的用户体验。
本篇文章将深入探讨AIDL在Android客户端和服务端中的应用。 一、AIDL基础 1. AIDL语法:AIDL类似于Java接口,定义了一组方法,这些方法可以在客户端和服务端之间进行调用。每个AIDL文件包含一个接口声明,接口中...
3. **源代码目录**:`src`目录通常包含服务端的Java源代码,按照包结构组织,比如业务逻辑类、数据访问对象(DAO)、控制器等,这些类负责处理客户端请求,执行业务逻辑,并与数据库进行交互。 4. **Web应用结构**...
客户端的Pipeline配置可以与服务端类似,但通常会缺少服务器的接受新连接的部分。 心跳机制在长连接中非常重要,它可以确保连接的活跃性。在Netty中,我们可以自定义HeartbeatHandler,定期向对端发送心跳消息,并...
本文将深入探讨Java在客户端与服务端交互中的关键知识点,帮助开发者理解和掌握相关技术。 首先,我们要理解客户端与服务端的基本概念。客户端是用户与应用交互的部分,如浏览器、移动应用或桌面应用;服务端则负责...
本教程将详细讲解如何通过AIDL实现客户端和服务端之间的交互,包括传递基础类型的数据,序列化对象以及服务端主动向客户端推送数据。 首先,我们来看标题"android Aidl 客户端和服务端Demo",它暗示我们将探讨一个...
当编译项目时,Android编译系统会自动生成对应的Java接口和Binder类,使得服务端和客户端可以使用这些接口进行交互。在服务端,我们需要实现这个接口,并在Service中注册它: ```java public class ...
这个压缩包文件提供的"Android 应用完整源码 客户端+服务端+数据库"为开发者提供了一个完整的示例,有助于深入理解Android应用的架构和交互流程。 1. **客户端**: 客户端是用户直接接触的部分,由Android应用的UI...
在Android开发领域,构建一个购物商城类应用是常见的任务,尤其对于初学者而言,这是一个很好的实践项目。...通过这个项目,开发者可以深入掌握客户端与服务端的交互,以及如何构建一个完整的购物应用。
本篇将深入探讨如何在Android客户端与服务端之间利用Socket进行通信。 首先,我们要理解Socket的基本概念。Socket,也称为套接字,是网络编程中的一个接口,它允许应用程序通过网络发送和接收数据。在TCP/IP协议族...
2. **数据解析**:服务端返回的数据通常以JSON格式存在,Android客户端需要将这些数据解析为可操作的对象。Gson库是一个常用的JSON解析库,它可以将JSON字符串自动映射到Java对象,反之亦然。例如,你可以创建一个...
1. **Android客户端开发**: - 客户端是用户与系统交互的主要界面,通常包括登录/注册、商品浏览、搜索、发布和购买等功能。 - 源码中可能包含XML布局文件,用于定义用户界面元素;Java或Kotlin类,处理业务逻辑和...
二、Android客户端 1. UI设计:客户端采用了Material Design设计语言,提供了清晰、直观的用户界面,包括菜品分类、搜索、订单状态显示等模块。 2. 数据请求:客户端通过Retrofit或OkHttp等网络库与服务端进行交互...
在实际操作中,Android系统会自动生成服务端接口的Java代码,客户端通过这些生成的代码来与服务端交互。当客户端调用AIDL接口方法时,请求会被序列化并发送到服务端,服务端接收到请求后,反序列化并执行相应的方法...
本主题聚焦于这两种蓝牙技术的客户端和服务端开发,特别是针对Android平台。 经典蓝牙是一种早期的蓝牙技术,主要用于音频流传输、数据交换等场景,如无线耳机、键盘和鼠标等。它的传输速度较高,但功耗相对较大。...
AIDL(Android Interface Definition Language)是Android提供的一种强大的工具,用于创建跨进程的接口,使得客户端和服务端能够安全有效地进行通信。在这个"AIDL客户端和服务端代码示例"中,我们将深入探讨如何使用...