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

时间: 2025-01-21 09:24:20

Android手机访问web服务器(post请求)的相关文章

android 4 0 3-android访问web服务器无法重定向

问题描述 android访问web服务器无法重定向 login.nx?isPost=1&forwardAction=androidAppLoginRole.action&token=[fsVisitKey:${fsVisitKey}][fsUserId:${fsUserId}] loginUserInfo android 访问androidAppLogin,在androidAppLogin的这个action类里返回的是success,然后在这个struts配置文件中进行重定向就在手机端报3

不能访问Web服务器的解决方法

访问Web服务器是许多局域网用户经常要做的一项"功课",在频繁访问过程中,不少朋友积累了一些Web服务器访问经验,这些经验常常会帮助他们快速解决一些无法访问的小故障. 访问Web服务器是许多局域网用户经常要做的一项"功课",在频繁访问过程中,不少朋友积累了一些Web服务器访问经验,这些经验常常会帮助他们快速解决一些无法访问的小故障.不过,本文下面贡献出来的Web服务器不能访问故障现象却比较特别,如果不加细细分析,单纯以经验来解决故障时,多半容易走弯路:为了帮助各位朋

winCE 通过http协议访问 web服务器(C++)

问题描述 winCE 通过http协议访问 web服务器(C++) 小弟我弄了好久,想在winCE 操作系统上用C++语言实现通过HTTP 协议访问服务器.问度娘也没弄清,希望大神们可以帮帮小弟,给小弟我一个C++的demo!万分感谢!! 解决方案 基于HTTP协议的Web服务器基于Http协议的Web服务器HTTP Web服务器研究之二 HTTP协议

Android使用httpPost向服务器发送请求的方法_Android

本文实例讲述了Android使用httpPost向服务器发送请求的方法.分享给大家供大家参考,具体如下: import java.util.List; 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

Android使用httpPost向服务器发送请求的方法

本文实例讲述了Android使用httpPost向服务器发送请求的方法.分享给大家供大家参考,具体如下: import java.util.List; 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

服务器监视 MyIIS.Monitor支持手机访问_win服务器

监控内容:  服务器开机时间  服务器物理内存数量  服务器可用物理内存  平均接受流量(服务器发接受到的流量)  平均发送流量(服务器发送出去的流量)  远程登录服务器的人数(连上服务器就算)  CPU使用情况,支持多个CPU 安装条件:  Win2003 IIS6 安装过程:  新建一个站点,指向 Web 目录  运行 注册.BAT  修改 Web/index.asp 里的参数  修改 Service/MyIIS.INI 里的参数  运行 Service/安装.BAT 用浏览器或手机访问(手

winform中点击按钮向web服务器发送请求并接受服务器返回的一个hash数据

问题描述 要做一个oa登录页面,要winform形式的,点击一个按钮向服务器传递客户端本地的系统用户名和ip地址,服务器接收后就不管我事了,他处理完给我传回一个hash数据,我再通过System.Diagnostics.Process.Start("http://...?user=系统用户名&hash=服务器传回的hash值");这样就行了,问题是我怎么向他发送我本地的系统用户名和ip,然后又怎么接收他传回的hsah数据,服务器是web服务器,而我的登录界面是winform的,

Nginx防止直接用IP访问Web服务器的设置方法_nginx

官方文档中提供的方法: If you do not want to process requests with undefined "Host" header lines, you may define a default server that just drops the requests: 复制代码 代码如下: server { listen 80 default_server; server_name _; return 444; } 说白了就是只要是访客用ip访问就直接重置4

android与WEB服务器交互时的SESSION

当Android应用程序访问WEB服务器的时候,我们为了与服务器保持同一会话,也就是说当前登录用户与服务器的交互是在同一个SessionId下. 当我们登录成功的时候,可以通过HTTP请求获取到Cookie信息,其中包括会话的SessionId,同时也可以自己将SessionId放入Json中返回.Session我们可以用一个静态变量来存放,每次向服务器发送请求的时候将SessionId带过去,服务器会自动检验这个SessionId有没有失效. DefaultHttpClient httpcli