客户端与服务器接口的交互。

DefaultHttpClient httpClient = new DefaultHttpClient();//http://tulogin.erzao.org/tu-login/_____localhost:8080
		HttpPost method = new HttpPost("http://localhost:8080/tu-login/tuloginMethod");

		JSONObject jsonParam = new JSONObject();
		jsonParam.put("phone", phone);
		jsonParam.put("password", password);
		jsonParam.put("requrl", requrl);

		StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
		entity.setContentEncoding("UTF-8");
		entity.setContentType("application/json");
		method.setEntity(entity);
		HttpResponse resGet;

上面的代码是设置与服务器连接的,包括连接服务器的方法,以及传输数据的格式,可编码方式等。

下面的代码是处理服务器的返回值的。

try {
			//通过DefaultHttpClient 来获得返回的参数(值)
			resGet = httpClient.execute(method);
			//将返回值设置编码格式,(避免乱码)
			String resData = EntityUtils.toString(resGet.getEntity(),"utf-8");
			//通过net.sf.json.JSONObject 来解析字符串
			JSONObject resJSON = JSONObject.fromObject(resData);
			//把json中的user对象获取,并强转。
			Object userjson = resJSON.get("user");
			String userString = userjson.toString();

			//通过com.google.gson.Gson 来处理json 类型的user对象。
			Gson gson = new Gson();

			//user就是转换后的对象。

			//在这里,我对com.google.gson.JsonObject有点疑问,为啥这个不能解析返回的字符串呢?
			//这个类有什么作用?
			JsonObject jsonObj = new JsonObject();
			jsonObj.getAsJsonObject(resData);

			if("A00000".equals(resJSON.get("code"))){
				User user = gson.fromJson((String) userString, User.class);
				String token = (String)resJSON.get("token");
				securityUtil.addCookieToken(request,response,token,user.getId());
				request.getSession().setAttribute("user", user);
			}

			if ( !"A00000".equals(resJSON.get("code"))) {
				result = resJSON.get("data");
			}/*else{
			result = securityUtil.getReqURL(request,response);
			}*/

			resultCode = resJSON.get("code");
		} catch (ClassCastException e) {
			logger.error(e.getMessage());
			resultCode = ResultCode.INTERNAL_ERROR;
			result = e.getMessage();
		}catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

再下面是服务器处理请求的。

@RequestMapping(value = "/tuloginMethod")
	public void login(@RequestBody Map<String, Object> map,
			HttpServletRequest request, HttpServletResponse response) throws UnAuthedException {
		response.setCharacterEncoding("UTF-8");
		String phone = (String) map.get("phone");
		String password = Md5Util.md5((String) map.get("password"));
		ResultCode resultCode = ResultCode.SUCCEED;
		Object result = null;
		User user = null;
		String token = null;

		try {
			ParamChecker.notEmpty("phone", phone);
			ParamChecker.notEmpty("password", password);

			user = UserService.login(request, response, phone, password);
			token = (String) request.getAttribute("token");
		} catch (UnAuthedException e) {
			logger.error(e.getMessage());
			resultCode = e.getResultCode();
			result = e.getMessage();

		} catch (Exception e) {
			logger.error(e.getMessage(), e);
			resultCode = ResultCode.INTERNAL_ERROR;
			result = e.getMessage();
		}
		setResponseMethod(response, resultCode, result, user , token);
	}

对传入的JSON进行解析,并对其进行应有的操作。

并返回值。

下面的代码是最后返回的时候。

 protected void setResponseMethod(HttpServletResponse resp, ResultCode resultCode,
            Object result,User user ,String token , String callback) {
        try {
        	resp.setCharacterEncoding("utf-8");
            PrintWriter out = resp.getWriter();
            Map<String, Object> ret = new LinkedHashMap<String, Object>();
            ret.put("code", resultCode.getCode());
            ret.put("data", result);
            ret.put("user", user);
            ret.put("token", token);
            String responseStr = GSON.toJson(ret);
            out.println(responseStr);
            out.close();
            resp.setCharacterEncoding("utf-8");

        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
    }

OK,这样,客户端与服务器进行交互,传入参数到服务器中进行处理,并返回值到客户端进行处理。

时间: 2024-11-08 18:32:56

客户端与服务器接口的交互。的相关文章

接口-Android 客户端与服务器的通信

问题描述 Android 客户端与服务器的通信 现在在做一个收货地址的功能.首先进入我的收货地址界面,会请求一个我的地址接口,显示个人的地址列表.然后有一个按钮,是进入增加收货地址界面,把手机号,姓名等信息成功提交给服务器.然后再次请求我的地址接口.为什么新添加的地址有时能请求到,有时又不能请求到 解决方案 你的意思是说提交给服务器之后数据没有马上写入到数据库,存在着一个延时,是吗.服务端应该没问题,ios的做这个功能没有问题 解决方案二: 有时候能够请求到服务器端的数据,有时候请求不到数据,肯

怎么在非IE浏览器实现这个功能?想在客户端获取证书内的信息,用于与服务器进行数据交互。

问题描述 怎么在非IE浏览器实现这个功能?想在客户端获取证书内的信息,用于与服务器进行数据交互. 怎么在非IE浏览器实现这个功能?想在客户端获取证书内的信息,用于与服务器进行数据交互.想利用JAVASCRIPT之类的代码,实现这个证书弹窗.有点类似于IE的ACTIVEXOBJECT.

安卓程序下标越界-android客户端从服务器获取图片报数组下标越界

问题描述 android客户端从服务器获取图片报数组下标越界 速求:各位大神好,帮忙给看一下,刚才运行安卓客户端从服务器获取图片报"数组下标越界",程序挂掉了,啥原因呢:public class MainActivity extends Activity implements OnScrollListener { private static final String TAG = null; private int count=0; public SimpleAdapter simpl

Variable v1.2--在客户端和服务器之间传送变量

Variable是一个用于在客户端与服务器之间传递数据的控件.Variable v1.2对1.1做了以下改进: (1)实现了ICallbackEventHandler接口,支持在ASP.NET网页中不经过回发在客户端与服务器之间传递 数据: (2)增强了客户端VariableManager的功能: Variable v1.2 使用指南: 1.不经过回发在客户端与服务器之间传递数据 (1)在客户端发送回调将数据传送到服务器 在客户端发送回调将数据传送到服务器非常简单,只需创建一个回调函数并调用 V

客户端和服务器的中间件是什么

问题描述 客户端和服务器的中间件是什么 课程设计,老师让我们设计一个客户端服务器模式(CS)的程序,要求有一个中间件,因为不让直接用客户端连接服务器. 老师说中间件就像一个网关,可以弄的简单点,但是我平常弄的都是直接在客户端登陆服务器修改服务器的数据,不知道 这个中间件该做什么,该怎么做.我想问下,这个中间件应该怎么弄,大概意思说下就可以. 谢谢. 解决方案 中间间网关,其实就是在客户端和服务器中间的一种服务器,他提供透传的功能,即服务器和客户端的交互比较通过gate中转. 通常只有网关有外网I

客户端与服务器-Android客户端能不能直接从网站服务器读取数据?

问题描述 Android客户端能不能直接从网站服务器读取数据? 本人小白 最近在做Android的客户端要与服务器的数据库交互 以前也没怎么接触过网络和数据库的知识 网上也看过一些资料 基本都是用post的方法向一个网站提交数据然后解析返回的html 现在有些困惑 希望高手能帮我解答一下 1.客户端能不能直接连接服务器端的数据库 可以的话要怎么做? 2.我用post和get方式向一个url递交数据,然后返回html文件这样算不算服务器数据库交互? 3.网站上登录需要用户名密码和验证码 客户端上希

网络编程-android 安卓 4.0 给一个客户端和服务器的demo。

问题描述 android 安卓 4.0 给一个客户端和服务器的demo. android 4.0以后到底是怎么联网的?求大神给一个demo.一个客户端和一个服务器的.服务器端servlet的写的吧.越详细越好.谢谢了.对那个异步消息不是很懂,还有就是子线程一块给详细点.谢谢了 解决方案 楼主,你这个问题有点大...我提供一些思路 客户端就不用说了.服务器端,按照现在的流行趋势,建议用Nodejs + MongoDB.Nodejs就类似tomcat,是给服务器端部署监听,监听客户端的请求.Mong

应用-急问有关客户端和服务器问题

问题描述 急问有关客户端和服务器问题 想做一款能够显示出服务器端文件,并且判断是否更新的应用软件,我客户端界面用什么来编写,服务器端用什么来编写 客户端是exe文件 解决方案 解决android中客户端和服务器端的数据传输中文乱码问题 解决方案二: 客户随便什么都行,只要能展现在pc机或手机上就行,后台一般用java或者.net都可以 解决方案三: 直接用Java好了, 做网页的方式的时候,可以使用Python可视化还是比较快的. 解决方案四: 要做SVN的翻版么? 解决方案五: 前端用Ajax

php-关于安卓客户端向服务器传送图片并生成缩略图的问题

问题描述 关于安卓客户端向服务器传送图片并生成缩略图的问题 我本来是在安卓客户端生成缩略图的,然后和原图一起发送到服务器,现在改用在服务器端用php生成缩略图,本机实验成功,但是如果是客户端传来的图片,只能保存原图,不能用服务器生成缩略图.我判断了一下,因为生成缩略图要用$src_image=ImageCreateFromBMP($uploads_dir.$uploadname)来调用原图,是不是因为客户端向服务器端发送时,原图还未上传好就调用原图引发错误了?可是我已经加了一个if(move_u