Android手机访问web服务器(post请求)

简介: 一:客户端—服务器连接操作类(HttpUtil) package com.example.userdatatoweb; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import

一:客户端—服务器连接操作类(HttpUtil)

package com.example.userdatatoweb;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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;
import org.apache.http.util.EntityUtils;

/**
 * Android客户端连接服务器操作类
 * */
public class HttpUtil {
 
 public static String serverPath="222.23.162.221:8080";                                                                    

//服务器的ip地址以及参数
 public static String contextPath="/prjMyschoolmate";                                                                        

//服务器虚拟目录(web项目名),研究web服务器上下文路径
 public static String loginUrl="
http://"+serverPath+contextPath+"/servlet/LoginServlet";                    

//服务器的登录的url
 public static String allUser="
http://"+serverPath+contextPath+"/servlet/GetAllStudentServlet";       

//获取服务器中所有的学生信息
 public static String userDetails="
http://"+serverPath+contextPath+"/servlet/GetStudentById";        

//根据id查询学生的详细信息
 public static String deleteUser="
http://"+serverPath+contextPath+"/servlet/DeleteStudent";           

//根据id删除学生信息
 public static String addUser="
http://"+serverPath+contextPath+"/servlet/AddStudent";                   

//保存学生信息
 public static String updateUser="
http://"+serverPath+contextPath+"/servlet/UpdateStudent";        

//更新学生信息
 
 /**
  * 发送请求,并获取相应,用post访问服务器
  * @param url 请求地址
  * @param map 请求参数
  * @throws Exception
  * */
 public static String sendRequest(String url,Map<String, String> map) throws Exception{
  
  String msg="";
  String urlstr=url;
  

  //准备post请求对象
  HttpPost request=new HttpPost(urlstr);
  List<NameValuePair> params=new ArrayList<NameValuePair>();
  //这个内容:把map中的键值对,存放到params对象中,该对象是一个List集合,内容为NameValuePair对象
  if(map!=null){
   Set<Entry<String, String>> set=map.entrySet();
   for(Entry<String, String> entry:set){
    params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
   }
  }

  try {
   //将参数按要求保存请求中
   request.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
   HttpResponse response=new DefaultHttpClient().execute(request);

   //判断登录是否成功
   if(response.getStatusLine().getStatusCode()==200){
    //将返回的数据变string保存msg
    msg=EntityUtils.toString(response.getEntity());
   }else if(response.getStatusLine().getStatusCode()==404){

    msg="404-服务器不存在";
   }else if(response.getStatusLine().getStatusCode()==500){
    msg="505-抱歉,登录码编译编译错误";
   }else{
    msg="登录失败";
   }
  } catch (Exception e) {
   e.printStackTrace();
   throw new Exception("登录失败");
  }
  return msg;
 }
}

三:向服务器添加用户类(AddUserActivity)

package com.example.userdatatoweb;

import java.util.HashMap;
import java.util.Map;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.support.v4.app.NavUtils;

public class AddUserActivity extends Activity {
 EditText txtName;
 EditText txtAge;
 EditText txtTel;
 EditText txtAddress;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.adduser
);
        //获取界面控件
        txtName=(EditText) findViewById(R.id.etName);
        txtAge=(EditText) findViewById(R.id.etAge);
        txtTel=(EditText) findViewById(R.id.etTel);
        txtAddress=(EditText) findViewById(R.id.etAddress);
    }
    /**
     * 保存用户
     * */
    public void saveUser(View view){
     //获取界面数据
     String name=txtName.getText().toString();
     String age=txtAge.getText().toString();
     String tel=txtTel.getText().toString();
     String address=txtAddress.getText().toString();
     //map集合封装界面数据
     Map<String, String> map=new HashMap<String, String>();
     map.put("name", name);
     map.put("age", age);
     map.put("tel", tel);
     map.put("address", address);
     try {
   String result=HttpUtil.sendRequest(HttpUtil.addUser, map);
   //跳转用户列表页
   Intent intent=new Intent();
   intent.setClass(this, UserListActivity.class);
   startActivity(intent);
   this.finish();
  } catch (Exception e) {
   Log.i("Web", name+"页面跳转失败");
   e.printStackTrace();
  }
    }

注:添加界面:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="
http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1" >
 <TextView
       android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="@string/useradd"
     android:gravity="center"
     android:textSize="18sp" />
 <TextView
       android:layout_width="fill_parent"
     android:layout_height="@dimen/useraddline"
     android:background="#fff"/>
  <TableRow
      android:id="@+id/tableRow2"
       android:layout_width="wrap_content"
      android:layout_height="wrap_content">
      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/username"/>
      <EditText
          android:id="@+id/etName"
          android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text=""/>
  </TableRow>
  <TableRow
      android:id="@+id/tableRow3"
       android:layout_width="wrap_content"
      android:layout_height="wrap_content">
      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/userage"/>
      <EditText
          android:id="@+id/etAge"
          android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text=""
       android:numeric="integer"/>
  </TableRow>
  <TableRow
      android:id="@+id/tableRow4"
       android:layout_width="wrap_content"
      android:layout_height="wrap_content">
      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/usertel"/>
      <EditText
          android:id="@+id/etTel"
          android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text=""
       android:numeric="decimal"/>
  </TableRow>
  <TableRow
      android:id="@+id/tableRow5"
       android:layout_width="wrap_content"
      android:layout_height="wrap_content">
      <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/useraddress"/>
      <EditText
          android:id="@+id/etAddress"
          android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text=""/>
  </TableRow>
  <Button
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="@string/save"
     android:onClick="saveUser" />
</TableLayout>

 

简单web服务器:

目录
相关文章
|
2月前
|
存储 数据挖掘 Windows
服务器数据恢复—V7000存储raid5故障导致LUN无法访问的数据恢复案例
服务器数据恢复环境: 三台V7000存储,共有64块SAS硬盘(其中有三块热备盘,其中一块已启用)组建了数组raid5阵列。分配若干LUN,上层安装Windows server操作系统,数据分区格式化为NTFS文件系统。 服务器故障: V7000存储中有多块硬盘出现故障离线,阵列失效,LUN无法访问。需要恢复卷中所有数据(主要为dcm文件)。
|
19天前
|
负载均衡 数据可视化 API
像素流送api ue多人访问需要什么显卡服务器
本文总结了关于像素流送技术的五大常见问题,包括是否支持Unity模型推流、UE多人访问的最大并发数、所需服务器配置、稳定性问题及API支持情况,旨在帮助开发者更好地理解和应用这一技术。
47 1
|
27天前
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
56 4
|
27天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
40 3
|
2月前
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
160 2
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
2月前
|
Web App开发 Android开发
利用firefox调试安卓手机端web
该教程详细介绍如何通过Firefox浏览器实现手机与电脑的远程调试。手机端需安装最新版Firefox,并按指定步骤设置完成;电脑端则需安装15版及以上Firefox。设置完成后,通过工具栏中的“远程调试”选项,输入手机IP地址即可连接。连接确认后,即可使用电脑端Firefox调试器调试手机上的Web信息。注意,调试前手机需提前打开目标网页。
96 2
|
2月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
53 3
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
58 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
84 1
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?

热门文章

最新文章