Android 客户端无法访问 服务器,Android客户端连接服务器

本文介绍了如何在Android应用中实现登录功能,包括EditText获取输入、HttpClient发送POST请求到基于SSH框架的服务器,以及服务器端的JSON响应处理。重点在于客户端与服务器通信的实现步骤。
摘要由CSDN通过智能技术生成

//Android端代码

public class LoginActivity extends Activity

{

EditText et_username,et_password;

TextView tv_errMsg;

Button btn_login;

String strUrl = "http://192.168.1.102:8080/Login/login_login2.action";

public static int REQUEST_SUCCESS_CODE = 200;

@Override

protected void onCreate(Bundle savedInstanceState)

{

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

this.setContentView(R.layout.proj2_login);

et_username = (EditText)findViewById(R.id.et_username);

et_password = (EditText)findViewById(R.id.et_password);

tv_errMsg = (TextView)findViewById(R.id.tv_errMsg);

btn_login = (Button)findViewById(R.id.btn_login);

btn_login.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

String result;

/* 发送部分 */

try {

HttpClient httpClient = new DefaultHttpClient();

String address = strUrl;

HttpPost httpPost = new HttpPost(address);

List params = new LinkedList();

params.add(new BasicNameValuePair("username", et_username.getText().toString()));

params.add(new BasicNameValuePair("password", et_password.getText().toString()));

httpPost.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中

HttpResponse httpResponse = httpClient.execute(httpPost);

/* 接收 */

if (httpResponse.getStatusLine().getStatusCode() == 200) {

result = EntityUtils.toString(httpResponse.getEntity());

/* json文本解析 */

JSONTokener jsonParser = new JSONTokener(result);

JSONObject jsonResult = (JSONObject) jsonParser.nextValue();

String status = jsonResult.getString("loginStatus");

String outMessage = jsonResult.getString("outMessage");

if(status.equals("true")){

Intent intent = new Intent(LoginActivity.this, MainActivity.class);

intent.putExtra("username", outMessage);

startActivityForResult(intent, REQUEST_SUCCESS_CODE);

} else {

tv_errMsg.setVisibility(View.VISIBLE);

tv_errMsg.setText(outMessage);

}

} else {

tv_errMsg.setVisibility(View.VISIBLE);

tv_errMsg.setText("连接异常,CODE:" + httpResponse.getStatusLine().getStatusCode());

}

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

}

服务器端代码:采用SSH框架

public class LoginAction extends ActionSupport {

HttpServletRequest request;

HttpServletResponse response;

LoginService loginService;

public LoginService getLoginService() {

return loginService;

}

public void setLoginService(LoginService loginService) {

this.loginService = loginService;

}

public String execute() throws Exception

{

request = ServletActionContext.getRequest();

request.setCharacterEncoding("utf-8"); //避免乱码

String name = request.getParameter("username");

String password = request.getParameter("password");

int result = loginService.validate(name, password);//验证用户名密码是否正确

JsonObject jsonObj = new JsonObject();  //须引入gson jar包

String loginStatus = "";

String outMessage = "";

if(result>0){

loginStatus = "true";

outMessage = "登录失败!";

}

else{

loginStatus = "false";

outMessage = "用户名或密码错误!";

}

jsonObj.addProperty("loginStatus", loginStatus);

jsonObj.addProperty("outMessage", outMessage);

response = ServletActionContext.getResponse();

response.setContentType("text/html;charset=utf-8");//避免乱码

PrintWriter out = response.getWriter();

out.write(jsonObj.toString());

//out.println(jsonObj.toString()); //也ok

return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值