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服务器:

目录
相关文章
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
1691 12
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
815 17
使用Web浏览器访问UE应用的最佳实践
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
360 2
|
Java 数据库连接 数据库
强强联手!JSF 与 Hibernate 打造高效数据访问层,让你的应用如虎添翼,性能飙升!
【8月更文挑战第31天】本文通过具体示例详细介绍了如何在 JavaServer Faces (JSF) 应用程序中集成 Hibernate,实现数据访问层的最佳实践。首先,创建一个 JSF 项目并在 Eclipse 中配置支持 JSF 的服务器版本。接着,添加 JSF 和 Hibernate 依赖,并配置数据库连接池和 Hibernate 配置文件。然后,定义实体类 `User` 和 DAO 类 `UserDAO` 处理数据库操作。
308 0
|
API UED 开发者
Vaadin路由魔法:导航之舟,带你穿越页面迷宫!驾驭神奇URL,解锁无限可能!
【8月更文挑战第31天】Vaadin是一款现代Java Web开发框架,其路由机制结合前后端路由,确保流畅的用户体验和高效服务器资源利用。通过`@Route`注解和`Router`类,开发者可以轻松定义和管理页面路径。例如,`@Route(&quot;home&quot;)`可指定视图路径,而参数化路由如`@Route(&quot;user/:userId&quot;)`则允许URL传参。此外,Vaadin还提供了丰富的导航API和自定义路由事件监听器,助力开发者构建结构清晰且体验优秀的Web应用。
460 0
|
前端开发 API 数据处理
构建高效现代Web应用:深入探讨Entity Framework Core与GraphQL在数据访问中的结合使用
【8月更文挑战第31天】随着Web应用的发展,传统的RESTful API逐渐显现出局限性,现代应用开始转向GraphQL。与此同时,Entity Framework Core(EF Core)作为强大的ORM工具,在数据访问方面表现出色,支持异步操作和自动变更跟踪,简化了数据处理。GraphQL作为一种灵活的查询语言,允许客户端精确获取所需数据,减少不必要的传输。将EF Core与GraphQL结合使用,可实现高效的数据访问和灵活的数据查询,优化数据流并提升应用性能。这种技术组合不仅提高了开发效率,还优化了用户体验,有望成为未来Web开发的重要方向。
237 1
|
缓存 前端开发 JavaScript
Angular邂逅PWA:一场关于如何利用现代Web技术栈中的明星框架与渐进式理念,共同编织出具备原生应用般丝滑体验、离线访问及桌面集成能力的未来Web应用的探索之旅
【8月更文挑战第31天】本文详细介绍如何利用Angular将传统Web应用升级为渐进式Web应用(PWA),克服后者在网络依赖、设备集成及通知功能上的局限。通过具体命令行操作与代码示例,指导读者从新建Angular项目到配置`manifest.json`和服务工作进程,最终实现离线访问、主屏添加及推送通知等功能,显著提升用户体验。适合各水平开发者学习实践。
454 0
|
10月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1130 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
451 0
|
10月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1762 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章