Android应用连接服务器代码

本文介绍了如何在Android应用中编写代码来连接服务器,包括Android端和服务器端的代码实现,并特别提醒需要在AndroidManifest.xml中添加Internet权限,否则将无法连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Android端代码:

//这是一个工具类,需要连接服务器的时候直接在所需的activity中调用静态方法即可

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;

public class LandServer {
	private static String url = "http://192.168.0.106:8080/Helper/servlet/";
	private static String result;
	private static HttpClient hc = new DefaultHttpClient();

	public static String doPost(String path,String name, String psd) {
		HttpPost hp = new HttpPost(url+path);
		NameValuePair n = new BasicNameValuePair("username", name);
		NameValuePair u = new BasicNameValuePair("password", psd);
		List<NameValuePair> list = new ArrayList<NameValuePair>();
		list.add(n);
		list.add(u);
		try {
			HttpEntity he =new UrlEncodedFormEntity(list,HTTP.UTF_8);
			hp.setEntity(he);
			HttpResponse response = hc.execute(hp);
			System.out.println(response.getStatusLine().getStatusCode());
			if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
				HttpEntity het =response.getEntity();			
				InputStream in = het.getContent();
				BufferedReader bf = new BufferedReader(new InputStreamReader(in));
				String redLine = null;
				while((redLine=bf.readLine())!=null){
					System.out.println("redLine: " + redLine);
					result =redLine;
				}
				in.close();
			}else{
				System.out.println(response.getStatusLine().getStatusCode());
				result = "error";
			}
		} catch (Exception e) {
			e.printStackTrace();
			result = "Exception";
		}	
		System.out.println(result);
		return result;
	}
	
	
}

二、服务器端代码

//接受Android发来的请求,并从request中取出参数,通过response向Android端返回数据
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import utils.DealData;
import domain.User;

public class SchoolHelper extends HttpServlet {

	// public SchoolHelper() {
	// super();
	// }

	//
	// public void destroy() {
	// super.destroy();
	//
	// }

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println("username : " + username + "  password" + password);
		List<User>users = new ArrayList<User>();
		users = DealData.getAllUsers("users");
		User currentuser = new User();
		boolean flag = false;
		for(User u:users){
			if(u.getUsername().equals(username)&&u.getPassword().equals(password)){
				flag = true;
				currentuser = u;
			}
		}

		System.out.println(flag);
		if(flag){
			HttpSession session = request.getSession();
			session.setAttribute("currentuser", currentuser);
			out.print("true");
		}else{
			out.print("false");
		}
		

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
		System.out.println("成功");

	}

}
 



所以这两段代码结合起来就实现了一个Android应用的登录功能

三、注意

一定要给应用设置internet权限,否则打死都连不通(曾经被这个坑得很惨………………):

<uses-permission android:name="android.permission.INTERNET" />



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值