我是靠谱客的博主 寂寞魔镜,最近开发中收集的这篇文章主要介绍移动端向服务端提交数据——实现简单登录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

移动端通过网络连接与服务端进行数据交互,在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编码,但是如果发现码表中没有当前字符,会使用当前系统下默认编码:GBK
response.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>


MainActivity.class

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;
@Override
protected 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);
}
@Override
public 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() {
@Override
public void run() {
final String state=NetUilts.loginOfGet(username, password);
runOnUiThread(new Runnable() {//执行任务在主线程中
@Override
public void run() {//就是在主线程中操作
Toast.makeText(MainActivity.this, state, 0).show();
}
});
}
}).start();
}
private void dopost(final String username, final String password) {
new Thread(new Runnable(){
@Override
public void run() {
final String state=NetUilts.loginofPost(username, password);
runOnUiThread(new Runnable() {//执行任务在主线程中
@Override
public 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];//定义一个数组,用于读取is
int 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");//把流中的数据转换成字符串,采用的是GBk
baos.close();
return state;
}
}

最后在AndroidManifest中添加权限


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

如有不妥之处,请予以指正,谢谢!

最后

以上就是寂寞魔镜为你收集整理的移动端向服务端提交数据——实现简单登录的全部内容,希望文章能够帮你解决移动端向服务端提交数据——实现简单登录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部