在项目中实现注册登录有很多种方式,一般对于初学者来说,不使用框架,采用http的post和get请求后台服务器,是一种更好理解底层源码的方式。使用框架实现注册登录虽然比自己封装post和get请求后台方便,但是不利于我们更好地理解其中的原理和机制。
实现的步骤大致分为以下几点:
1. 创建HttpPost对象,并将服务器接口地址url设置好。
2. 利用NameValuePair类设置相关参数,并将NameValuePair放入到list集合中。
3. 发起post请求获取返回实例HttpResponse。
4. 使用EntityUtils对返回值的实体进行处理(可以取得返回的字符串,也可以取得返回的byte数组),一般在服务器返回的都是json字符串。
注意事项:
1.在主线程中不能直接访问网络,要开辟子线程。
2.在子线程中不能直接更新ui。
MainActivity:
package wujie.com.myapplication11;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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 java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private String url="http://192.168.1.101:8080/SHproject/homepage/register";//服务器接口地址
private EditText name,pwd;//用户名和密码
private Button submit;//提交按钮
private TextView result;//服务器返回结果
//Handler用于接收服务端返回的数据更新ui
private Handler hanlder=new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
String qq= (String) msg.obj;
result.setText("服务器返回: " + qq);
break;
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据
name= (EditText) findViewById(R.id.name);
pwd= (EditText) findViewById(R.id.pwd);
submit= (Button) findViewById(R.id.submit);
result= (TextView) findViewById(R.id.result);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread() {
@Override
public void run() {
String name1=name.getText().toString().trim();
String pwd1=pwd.getText().toString().trim();
NameValuePair pair1 = new BasicNameValuePair("name", name1);
NameValuePair pair2 = new BasicNameValuePair("password", pwd1);
List<NameValuePair> pairList = new ArrayList<NameValuePair>();
pairList.add(pair1);
pairList.add(pair2);
try
{
HttpEntity requestHttpEntity = new UrlEncodedFormEntity(
pairList);
// URl是接口地址
HttpPost httpPost = new HttpPost(url);
// 将请求体内容加入请求中
httpPost.setEntity(requestHttpEntity);
// 需要客户端对象来发送请求
HttpClient httpClient = new DefaultHttpClient();
// 发送请求
HttpResponse response = httpClient.execute(httpPost);
// 显示响应
showResponseResult(response);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}.start();
}
});
}
private void showResponseResult(HttpResponse response)
{
if (null == response)
{
return;
}
HttpEntity httpEntity = response.getEntity();
try
{
InputStream inputStream = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream));
String result1 = "";
String line = "";
while (null != (line = reader.readLine()))
{
result1 += line;
}
System.out.println(result1);
hanlder.obtainMessage(0,result1).sendToTarget();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="wujie.com.myapplication11.MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="用户名"
/>
<EditText
android:id="@+id/pwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="密码"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/submit"
android:text="提交"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/result"
android:textColor="#ff0000"
android:textSize="20sp"
android:paddingTop="18dp"/>
</LinearLayout>
运行截图:
网络权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。