移动端向服务端提交数据——实现简单登录
来源:互联网 发布:莫一兮 知乎 编辑:程序博客网 时间:2024/06/07 06:37
移动端通过网络连接与服务端进行数据交互,在App开发中占有很大比重,可以说服务端是移动端的“后勤部队”,服务端可以向移动端源源不断的更新“新鲜的血液”,使得移动端在应用市场上不那么轻易地“倒下”。
服务器端:
新建一个WEB工程
在src中新建一个servlet
package login_test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class login extends HttpServlet {public login() {super();}public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String username=request.getParameter("username");//采用ISO8859-1编码String password=request.getParameter("password");username=new String (username.getBytes("ISO8859-1"),"UTF-8");//采用iso8859-1进行你转换,转换成功字节数组,在采用utf——1编码对数据进行转换password=new String (password.getBytes("ISO8859-1"),"UTF-8");System.out.println("姓名"+username);System.out.println("密码"+password);if(username.equals("tianjie")&&password.equals("123")){//默认情况下使用的是iso8859——1编码,但是如果发现码表中没有当前字符,会使用当前系统下默认编码:GBKresponse.getOutputStream().write("登录成功".getBytes("utf-8"));}else{response.getOutputStream().write("登录失败".getBytes("UTF-8"));}} public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("dopost!!!!!!");this.doGet(request, response);}}
移动端:
新建android 工程
页面布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="账号" /> <EditText android:id="@+id/edt_username" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码" /> <EditText android:id="@+id/edt_password" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btn_submit_get" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="GET提交" /> <Button android:id="@+id/btn_submit_post" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="POST提交" /></LinearLayout>
package com.example.login;import com.example.Utils.NetUilts;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private EditText edt_username,edt_password;private Button btn_submin_get,btn_submit_post;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();//初始化控件}public void init(){edt_username=(EditText) findViewById(R.id.edt_username);edt_password=(EditText) findViewById(R.id.edt_password);btn_submin_get=(Button) findViewById(R.id.btn_submit_get);btn_submit_post=(Button) findViewById(R.id.btn_submit_post);btn_submin_get.setOnClickListener(this);btn_submit_post.setOnClickListener(this);}@Overridepublic void onClick(View v) {String username=edt_username.getText().toString();String password=edt_password.getText().toString(); switch(v.getId()){ case R.id.btn_submit_get: doget(username,password); break; case R.id.btn_submit_post: dopost(username,password); break; }}private void doget(final String username, final String password) {new Thread(new Runnable() {@Overridepublic void run() {final String state=NetUilts.loginOfGet(username, password);runOnUiThread(new Runnable() {//执行任务在主线程中@Overridepublic void run() {//就是在主线程中操作Toast.makeText(MainActivity.this, state, 0).show();}});}}).start();}private void dopost(final String username, final String password) {new Thread(new Runnable(){@Overridepublic void run() {final String state=NetUilts.loginofPost(username, password);runOnUiThread(new Runnable() {//执行任务在主线程中@Overridepublic void run() {//就是在主线程中操作Toast.makeText(MainActivity.this, state, 0).show();}});}}).start();}}
NetUils.class
package com.example.Utils;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import android.media.MediaRecorder.OutputFormat;public class NetUilts {/* * 用post方式登录 * @param username * @param password * @return 登录状态 * */public static String loginofPost(String username,String password){HttpURLConnection conn=null;try {URL url=new URL("http://192.168.1.106:8080/server_login/servlet/login");conn=(HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");//设置请求方式conn.setConnectTimeout(10000);//设置连接超时时间conn.setReadTimeout(5000);//设置读取超时时间//POST请求的参数OutputStream out=conn.getOutputStream();//获得输出流对象,用于向服务器写数据String data="username="+username+"&"+"password="+password;out.write(data.getBytes());//向服务器写数据;out.close();//关闭输出流conn.connect();//开始连接int responseCode=conn.getResponseCode();//获取响应吗if(responseCode==200){//访问成功InputStream is=conn.getInputStream();//得到InputStream输入流String state=getstateFromInputstream(is);return state;}else{//访问失败}} catch (Exception e) {e.printStackTrace();}finally{if(conn!=null){//如果conn不等于空,则关闭连接conn.disconnect();}}return null;}/* * 使用GET的方式登录 * @param username * @param password * @return 登录状态 * */public static String loginOfGet(String username,String password){HttpURLConnection conn=null;try {String data="username="+username+"&"+"password="+password;URL url=new URL("http://192.168.1.106:8080/server_login/servlet/login?"+data);conn=(HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");//设置请求方式conn.setConnectTimeout(10000);//设置连接超时时间conn.setReadTimeout(5000);//设置读取超时时间conn.connect();//开始连接int responseCode=conn.getResponseCode();//获取响应吗if(responseCode==200){//访问成功InputStream is=conn.getInputStream();//得到InputStream输入流String state=getstateFromInputstream(is);return state;}else{//访问失败}} catch (Exception e) {e.printStackTrace();}finally{if(conn!=null){//如果conn不等于空,则关闭连接conn.disconnect();}}return null;}private static String getstateFromInputstream(InputStream is) throws IOException {ByteArrayOutputStream baos=new ByteArrayOutputStream();//定义一个缓存流byte[] buffer=new byte[1024];//定义一个数组,用于读取isint len=-1;while((len =is.read(buffer)) != -1){//将字节写入缓存baos.write(buffer,0,len);}is.close();//关闭输入流String state =baos.toString();//将缓存流中的数据转换成字符串//String state=new String (baos.toByteArray(),"GBK");//把流中的数据转换成字符串,采用的是GBkbaos.close();return state;}}
最后在AndroidManifest中添加权限
<uses-permission android:name="android.permission.INTERNET"/>
如有不妥之处,请予以指正,谢谢!
2 0
- 移动端向服务端提交数据——实现简单登录
- VC实现json向服务端发送数据
- Java--Http向服务端提交字条串数据
- 利用AJAX实现简单的用户登录程序(处理服务端返回的文本数据)
- 实现向网页中的表单提交数据
- Android 实现Post向服务器提交数据
- Linux中客户端向服务端读取时间的简单实现
- android客户端和servlet服务端的简单登录实现
- Android网络编程之使用get方式向服务端提交数据和乱码问题的解决
- 向网页提交数据
- 将表单内容向邮件提交的简单实现
- linux下一个简单的TCP通信程序——客户端向服务端发送任意字符串
- 利用vb向网页提交表单数据的实现代码
- 利用vb向网页提交表单数据的实现代码
- web移动端下拉加载数据简单实现
- oc客服端向服务端传输数据的加密
- KSOAP 结要——移动端到服务端通信
- 移动端简单的登录页面
- 洛谷 P1049 装箱问题
- 使用yum安装Mysql ,并进行简单配置
- centos7 安装后的一些简单配置
- C++动态数组vector
- JAVA源码分析Collection之LinkedList
- 移动端向服务端提交数据——实现简单登录
- POJ 3723 Conscription(并查集+最小生成树)
- JDBC入门(重构,配置与CRUD操作)
- nginx + tomcat 集群
- R语言Data Frame数据框常用操作
- MyEclipse移动开发教程:构建MobiOne应用(二)
- 手机访问本地局域网内服务器网站
- java--方法的重载和方法的重写
- Typora Markdown 语法