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,这样,客户端与服务器进行交互,传入参数到服务器中进行处理,并返回值到客户端进行处理。
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
首先,我们要理解服务器与客户端的基本交互模型。在Web环境中,客户端通常是浏览器,它向服务器发送HTTP请求(如GET或POST),服务器接收到请求后处理,然后返回相应的HTTP响应,如HTML、JSON或XML数据。PHP作为...
为了使客户端更容易地与服务器接口,常使用REST(Representational State Transfer)原则设计API。RESTful API遵循资源导向的原则,使用HTTP方法(GET、POST、PUT、DELETE)来操作资源,使得接口清晰、简洁。 5. *...
- 通常,服务器端会提供RESTful API接口,客户端通过这些接口进行交互,遵循统一的资源表示和操作方式。 9. **缓存策略**: - 对于不频繁变化的数据,可以采用本地缓存策略,减少不必要的网络请求。 通过以上...
当客户端(如浏览器)发起HTTP请求时,它会与服务器建立TCP连接,然后发送HTTP请求报文。服务器接收到请求后,解析请求行和头信息,处理请求,然后通过TCP连接返回HTTP响应报文。在Java中,可以通过`java.net.Socket...
2. **构建请求参数**:根据服务器接口的要求,客户端需要构建请求参数。这可能包括GET请求的URL参数,或者POST请求的Body数据。对于POST请求,可以使用`RequestBody`对象封装数据,例如使用`FormBody`或`...
Java-web客户端和服务器端交互的原理 Java-web客户端和服务器端交互的原理可以分为三个部分:客户端、服务器端和协议。客户端和服务器端之间通过socket无状态连接进行交互,通过IO流进行报文信息交互,最后会话结束...
在本文中,我们将深入探讨如何实现客户端与服务端的交互,特别是在Android Studio中构建客户端应用,结合Java EE技术搭建服务端。这个项目涵盖了用户登录、注册功能,以及数据的增删改查操作,通过MySQL数据库进行...
在Android开发中,客户端与服务器的交互是应用程序功能实现的核心部分。这个实例主要涉及的是Android客户端如何通过网络连接到服务器,并进行数据交换。下面将详细解释这个过程中的关键知识点。 1. **Android网络...
7. **API设计**: 设计良好的RESTful API接口是服务器端与客户端通信的关键。每个API通常对应一个特定的HTTP方法(GET、POST、PUT、DELETE等)和URL,用于执行特定的操作。 8. **数据验证**: 在Demo中提到了“验证”...
QSocket提供了客户端和服务器端的接口,支持TCP和UDP协议。对于服务器端,我们首先需要创建一个QTcpServer对象,监听特定的端口,等待客户端的连接请求。当有连接请求时,QTcpServer的newConnection()信号会被触发,...
在Android客户端实现与服务器交互的用户登录功能是一个基础但至关重要的任务,这涉及到客户端与服务端的通信协议、数据格式的处理以及用户认证的安全性。在这个过程中,Android应用需要发送登录请求到JavaWebServlet...
在Android开发中,客户端与服务器的交互是必不可少的,它涉及到数据的获取、发送以及处理。这份"Android参考源码-客户端连接服务器并交互实例.zip"提供了完整的示例代码,帮助开发者理解如何在Android应用中实现与...
在Android平台上,客户端与服务器之间的通信是移动应用开发的核心部分,它...通过以上知识点的学习和实践,开发者能够构建一个高效、稳定、安全的Android客户端,使其能够与服务器进行有效交互,提供丰富的功能和服务。
在Android开发中,客户端与服务器端的数据交互是一个关键环节,特别是在构建移动应用时。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于Android与服务器之间的通信,因为它易于阅读...
4. 服务器API接口:定义了与服务器交互的接口,如`login(String username, String password)`方法。 5. MySQL数据库连接相关类:处理数据库连接,执行SQL查询和结果处理。 在实际开发中,还需要考虑一些安全和用户...
在Android应用开发中,客户端与服务端的交互是不可或缺的一部分,尤其在实现用户登录功能时。本示例探讨的是如何在Android客户端与Eclipse服务端之间实现一个简单的登录功能。以下将详细介绍这个过程中的关键知识点...
这个"Android应用源码之客户端连接服务器并交互实例"提供了实现这一功能的实例代码,帮助开发者理解如何在Android中建立网络连接并与服务器进行数据交换。 首先,我们要了解Android中的网络通信方式。Android支持...
在安卓应用开发中,客户端与服务器的交互是不可或缺的一部分,这通常涉及到网络编程技术,如HTTP、HTTPS协议,以及可能的JSON或XML数据格式。在这个"安卓开发-客户端连接服务器并交互实例"中,我们将深入探讨如何...
9. **简洁版实现**:文件名“窗口服务器客户端交互UDP简洁版”可能是指一个简化版的UDP客户端服务器交互示例代码。这样的代码通常会展示如何用简单的步骤实现两个端之间的基本通信。 在实际开发中,理解并掌握这些...