`
Everyday都不同
  • 浏览: 723578 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

android客户端与服务端交互的工具类

阅读更多

客户端:

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对象即可。

分享到:
评论

相关推荐

    058集-Android客户端与服务端交互-客户端GET方式登录

    总之,Android客户端与服务端交互涉及网络请求、数据交换、错误处理等多个环节,GET方式登录只是其中一种基本的交互形式。理解并熟练掌握这些知识点对于Android开发者来说至关重要。通过学习该视频教程,开发者可以...

    Android客户端与服务端交互-客户端GET方式登录和客户端POST方式查询

    总的来说,Android客户端与服务端的交互主要依赖于HTTP协议,GET和POST是其核心方法。通过HttpURLConnection,我们可以灵活地构造请求并处理响应,实现客户端的功能。在实际开发中,还需要考虑错误处理、网络状态...

    android客户端与后台服务器交互

    本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...

    android客户端+服务端

    在Android应用开发中,"客户端+服务端"的架构模式是常见的设计方式,它涉及到Android客户端与远程服务器之间的数据通信和交互。这种模式允许应用程序在本地执行用户界面操作,同时利用服务器的计算能力和存储资源来...

    android客户端连接服务器交互实例

    在Android开发中,客户端与...通过理解和实践这些步骤,开发者可以构建出能够与服务器进行有效交互的Android客户端应用。在实际开发中,还需要考虑到网络状况、错误处理、数据缓存等更多细节,以提供更优秀的用户体验。

    android aidl客户端和服务端

    本篇文章将深入探讨AIDL在Android客户端和服务端中的应用。 一、AIDL基础 1. AIDL语法:AIDL类似于Java接口,定义了一组方法,这些方法可以在客户端和服务端之间进行调用。每个AIDL文件包含一个接口声明,接口中...

    Android若水新闻客户端中服务端源码

    3. **源代码目录**:`src`目录通常包含服务端的Java源代码,按照包结构组织,比如业务逻辑类、数据访问对象(DAO)、控制器等,这些类负责处理客户端请求,执行业务逻辑,并与数据库进行交互。 4. **Web应用结构**...

    Android使用Netty网络框架实践(客户端、服务端)

    客户端的Pipeline配置可以与服务端类似,但通常会缺少服务器的接受新连接的部分。 心跳机制在长连接中非常重要,它可以确保连接的活跃性。在Netty中,我们可以自定义HeartbeatHandler,定期向对端发送心跳消息,并...

    Java版-客户端与服务端

    本文将深入探讨Java在客户端与服务端交互中的关键知识点,帮助开发者理解和掌握相关技术。 首先,我们要理解客户端与服务端的基本概念。客户端是用户与应用交互的部分,如浏览器、移动应用或桌面应用;服务端则负责...

    android Aidl 客户端和服务端Demo

    本教程将详细讲解如何通过AIDL实现客户端和服务端之间的交互,包括传递基础类型的数据,序列化对象以及服务端主动向客户端推送数据。 首先,我们来看标题"android Aidl 客户端和服务端Demo",它暗示我们将探讨一个...

    AIDL实现客户端和服务端的双向通信

    当编译项目时,Android编译系统会自动生成对应的Java接口和Binder类,使得服务端和客户端可以使用这些接口进行交互。在服务端,我们需要实现这个接口,并在Service中注册它: ```java public class ...

    Android 应用完整源码 客户端+服务端+数据库

    这个压缩包文件提供的"Android 应用完整源码 客户端+服务端+数据库"为开发者提供了一个完整的示例,有助于深入理解Android应用的架构和交互流程。 1. **客户端**: 客户端是用户直接接触的部分,由Android应用的UI...

    Android 购物商城类源码,包含客户端、服务端

    在Android开发领域,构建一个购物商城类应用是常见的任务,尤其对于初学者而言,这是一个很好的实践项目。...通过这个项目,开发者可以深入掌握客户端与服务端的交互,以及如何构建一个完整的购物应用。

    android客户端服务端采用Socket通信

    本篇将深入探讨如何在Android客户端与服务端之间利用Socket进行通信。 首先,我们要理解Socket的基本概念。Socket,也称为套接字,是网络编程中的一个接口,它允许应用程序通过网络发送和接收数据。在TCP/IP协议族...

    android之客户端从服务端解析数据及上传与反馈数据

    2. **数据解析**:服务端返回的数据通常以JSON格式存在,Android客户端需要将这些数据解析为可操作的对象。Gson库是一个常用的JSON解析库,它可以将JSON字符串自动映射到Java对象,反之亦然。例如,你可以创建一个...

    Android应用源码基于安卓的校园二手交易系统客户端+服务端+数据库.rar

    1. **Android客户端开发**: - 客户端是用户与系统交互的主要界面,通常包括登录/注册、商品浏览、搜索、发布和购买等功能。 - 源码中可能包含XML布局文件,用于定义用户界面元素;Java或Kotlin类,处理业务逻辑和...

    android点餐客户端+服务端源码.zip

    二、Android客户端 1. UI设计:客户端采用了Material Design设计语言,提供了清晰、直观的用户界面,包括菜品分类、搜索、订单状态显示等模块。 2. 数据请求:客户端通过Retrofit或OkHttp等网络库与服务端进行交互...

    AIDl跨进程客户端与服务端互相通信

    在实际操作中,Android系统会自动生成服务端接口的Java代码,客户端通过这些生成的代码来与服务端交互。当客户端调用AIDL接口方法时,请求会被序列化并发送到服务端,服务端接收到请求后,反序列化并执行相应的方法...

    经典蓝牙+ble蓝牙(低功耗蓝牙)客户端\服务端开发

    本主题聚焦于这两种蓝牙技术的客户端和服务端开发,特别是针对Android平台。 经典蓝牙是一种早期的蓝牙技术,主要用于音频流传输、数据交换等场景,如无线耳机、键盘和鼠标等。它的传输速度较高,但功耗相对较大。...

    AIDL客户端和服务端代码示例

    AIDL(Android Interface Definition Language)是Android提供的一种强大的工具,用于创建跨进程的接口,使得客户端和服务端能够安全有效地进行通信。在这个"AIDL客户端和服务端代码示例"中,我们将深入探讨如何使用...

Global site tag (gtag.js) - Google Analytics