安卓之局域网连接怎么写

本文介绍了一个仿微信支付过程的Android应用开发,包括生成二维码、扫描二维码及服务器交互的逻辑。主要功能包括:1. 生成二维码时提交信息给服务器;2. 扫码后确认支付,更新服务器订单状态;3. 通过服务器查询订单状态以确认支付成功。文章探讨了如何实现在局域网中使手机与服务器连接,强调了开启WiFi、获取网络权限、正确设置服务器地址等关键点。

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

前天boss要我们写一个仿微信支付过程的demo.下来和同事讨论了一下,简单一点.

功能主要就两个app,一个负责生成二维码,一个负责扫二维码,再加上个服务器来接收订单数据.

逻辑也十分简单:

1.生成二维码的那个app,在生成的二维码的同时,向服务器提交二维码的信息.

2.服务器收到信息,做成订单并保持,但当前订单状态为"未支付".

3.扫二维码的那个app,扫码获取信息,确认支付后,也发二维码的信息给服务器

4.服务器收到信息,根据订单号找到订单信息,修改状态为"已支付".

5.生成二维码的那个app,此时点击"支付成功",再次发送信息到服务器,以查询订单状态是否为"已支付".是,就返回响应"成功".

(原本是想,在订单状态修改为"已支付"时,利用服务器直接发送成功消息到产生二维码的手机,但没想到有什么方法可以直接找到这个生成二维码的手机(也许我应该把手机消息也包含到二维码里),并且对服务器怎么传出数据给手机,没有清晰的认识,所以就退而求其次了)

其中一个问题就是如何让手机和服务器连接:

1.首先手机要开wifi,电脑要联网,app要有网络权限.

2.然后开始写app端的请求,其中需要注意的一点是连接地址要与服务器的IP地址+端口号吻合,要加http://

     private void sendRequestWithHttpClient() {
		new Thread(new Runnable() {
			@Override
			public void run() {
				HttpURLConnection conn=null;
				try {
					URL url=new URL(webURL);//这里的webURL就是服务器的IP地址和端口号了
					conn=(HttpURLConnection) url.openConnection();//使用URL打开一个链接
					conn.setRequestMethod("POST");//post方式请求
					conn.setConnectTimeout(1000);
					conn.setReadTimeout(3000);
				    conn.setDoInput(true); //允许输入流,即允许下载  
		            conn.setDoOutput(true); //允许输出流,即允许上传
		            conn.setUseCaches(false); //不使用缓冲
					DataOutputStream out=new DataOutputStream(conn.getOutputStream());
					out.writeBytes(
							fashongsj//这里post方式时,发送的消息字符串,格式为"name=张三&sex=男&tel=10086"
							);
					InputStream in=conn.getInputStream();//获取输入流,此时才真正建立链接 
					BufferedReader reader=new BufferedReader(new InputStreamReader(in));//转成字符
					final String jieguo=(reader.readLine());//URLEncoder.encode()是转格式,返回的即使是utf-8的字符数据,就不需要转了.jieguo是服务器返回的响应结果.
				} catch (Exception e) {
					e.printStackTrace(); 
				}finally{
					//关闭连接
					conn.disconnect();
				}
			}
		}).start();
	}
3.服务器代码的编写
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//设置请求和响应的格式
response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8");


中间这里是逻辑处理,用request.getParameter("字符串")来解析请求传递过来的数据.比如:String name2=request.getParameter("name").name2的值为"张三"

PrintWriter out=response.getWriter();//开始设置返回的响应了,我这里返回的是字符串型的数据,可以改成字节的.
	out.write(result.toString().trim());//result包含的就是我具体要返回的信息内容了,显然,它是个字符串
	out.flush();//刷新
	out.close();//关闭





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值