您的位置:首页 > 移动开发 > Android开发

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

2017-04-06 15:56 162 查看
客户端:

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对象即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: