【Android开发】采用GET方法进行网络传值

前两天学习了使用GET方法来进行安卓与WEB的网络传值问题。

 

今天来说一下大概方法。

WEB应用

在这里,我只建立一个简单的Servlet,用来接收安卓端发来的信息。

package deu.hpu.servlet;

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 ManagerServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
        String title=request.getParameter("title");
        title=new String(title.getBytes("ISO8859-1"),"UTF-8");
        String timelength=request.getParameter("timelength");
        timelength=new String(timelength.getBytes("ISO8859-1"),"UTF-8");
        System.out.println("视频名称"+title);
        System.out.println("时长"+timelength);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
 doGet(request,response);
}

}

 

安卓客户端

在这里,我要建立一个输入框界面,让用户吧数据输入进去,然后我再将数据通过get方式提交。

 

XML界面(两个输入框,一个按钮):

<LinearLayout 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:orientation="vertical"
    tools:context="com.example.newsmanager.MainActivity" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/title" />
    <EditText
       android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/title"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/timelength" />
    <EditText
       android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:numeric="integer"
        android:id="@+id/timelength"/>"

    <Button
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:onClick="save"
        android:text="@string/button"
        />
</LinearLayout>

 

之后我要在Activity里将界面的编辑框里面的值传到WEB端

 

主Activity(这里的线程问题在前面讲过):

package com.example.newsmanager;

import com.example.service.NewsService;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    private EditText titletext;
    private EditText lengthtext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
titletext=(EditText) findViewById(R.id.title);
lengthtext=(EditText) findViewById(R.id.timelength);
}
boolean flag;
    public void save(View view) throws Exception{
    	//开启线程
    	new Thread(new Runnable() {
        	String title=titletext.getText().toString();
        	String length=lengthtext.getText().toString();
@Override
public void run() {
boolean result;
try {
result = NewsService.save(title,length);
if(result){
//返回主线程显示
       runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), R.string.success, 1).show();
}
});

    	}else{
    	 runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), R.string.error, 1).show();
}
});
    	}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
    }
}

上面代码中的NewsService类以及save方法(这个类是用来处理信息,然后以get方式传往WEB端)。这里我要说一句,我们采用的GET方法,是将需要传递给WEB端的数据放在URL路径,然后WEB端进行解析得到的,所以我们要在方法中将URL路径给拼凑完成然后传给WEB端(里面的IP是我tomcat服务器本机的ip)。

package com.example.service;

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class NewsService {
    /*
     * 保存数据
     * title 标题
     * length 时长
     * */
public static boolean save(String title, String length) throws Exception{
String path="http://10.20.124.72:8080/videonews/ManagerServlet";
Map<String,String> map=new HashMap<String,String>();
map.put("title", title);
map.put("timelength", length);
return sendGETRequest(path,map,"UTF-8");
}
    /*
     * 发送Get请求
     * path请求路径
     * map请求参数
     * */
private static boolean sendGETRequest(String path, Map<String, String> map,String ecoding) throws Exception{
/*将路径拼成http://10.20.124.72:8080/videonews/ManagerServlet?title=XXX&timelength=90*/
StringBuilder url=new StringBuilder(path);
url.append("?");
//map迭代器Entry<Key, Value>
for(Map.Entry<String, String> entry:map.entrySet()){
url.append(entry.getKey()).append("=");
            //ecoding是上面传来的“UTF-8”,为了防止中文乱码
url.append(URLEncoder.encode(entry.getValue(), ecoding));
url.append("&");
}
url.deleteCharAt(url.length()-1);
URL url2=new URL(url.toString());
HttpURLConnection conn=(HttpURLConnection) url2.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode() == 200){
return true;
}
return false;
}

}

上面如果传到WEB端是成功的(即conn.getResponseCode() = 200),那么安卓端就会显示“登陆成功”,而且在WEB编辑器的控制台会以System.out.println方式打印出你传去的信息。

 

效果:

 

这里仅仅是一个传值的演示,没用用到数据库和输入输出流,真正做开发的时候这些东西是少不了的,所以要学会将东西结合起来应用。

时间: 2024-09-27 18:25:30

【Android开发】采用GET方法进行网络传值的相关文章

在android使用HttpClient get()方法 从网络下载txt文件 下载不完全

问题描述 情况1: HttpResponse httpResponses = new DefaultHttpClient().execute(get);if (httpResponses.getStatusLine().getStatusCode() == 200) {final InputStream is = httpResponses.getEntity().getContent();BufferedReader buReader=new BufferedReader(new InputS

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法. 1.finish()方法 finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:调用finish()方法会执行Activity.onDestroy()方法,结束Act

【Android开发】JSON格式传送网络信息

根据上一个案例:http://blog.csdn.net/acmman/article/details/38755237 下午又写了关于安卓网络传输的另外一种方法,采用JSON格式进行网络信息传递并解析.   用的WEB应用与Android客户端都是在上一个样例的基础上改写的.   WEB应用端 Servlet有所变化 package deu.hpu.servlet; import java.io.IOException; import java.io.PrintWriter; import j

Android开发中的几种网络请求方式详解_Android

Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请看Android开发技巧总结中的Android单元测试的步骤一文. Java.NET包中的HttpURLConnection类 Get方式: // Get方式请求 public static void requestByGet() throws Exception { String path = "h

Android开发入门环境快速搭建实战教程

前言 很多朋友都想开始自己的Android开发之旅,但是遇到困难重重.从最开始接触Android开发,从搭建开发环境就花了我大部分时间.所以,作为Android开发第一步,开发环境的搭建,显得基础而重要,下面介绍一种快速搭建Android开发环境的方法,以帮助更多朋友快速上手.话不多说了,来一起看看详细的介绍吧. 方法如下: 在开始之前,我们首先需要了解,当前开发android使用的主流开发平台为eclipse,因此本文讨论的是基于eclipse来做的. 具体需要的各个文件(软件)如下: Ecl

Android开发中Activity创建跳转及传值的方法_Android

在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider). 今天所介绍的就是Android开发中的四大组件之一:Activity,其他那三大组件以后再进行介绍.说道Android中的Activity,如果你做过iOS开发的话,Activity类似于iOS中的ViewController(视图控制器).在应用中能看到的东西都是放在活动中的.活动是安卓开发比较重要的东

Android开发之电话拨号器和短信发送器实现方法_Android

本文实例讲述了Android开发之电话拨号器和短信发送器实现方法.分享给大家供大家参考,具体如下: 电话拨号器 实现原理:用户输入电话号码,当点击拨打的时候,由监听对象捕获,监听对象通过文本控件获取到用户输入的电话号码,由于系统已经实现了电话拨号功能,所以我们只需要调用这个功能就可以了. 步骤: 1.界面布局 2.编写Activity 3.使用意图过滤器激活电话拨号功能 4.添加电话服务权限(用手机的电话服务,要在清单文件AndroidManifest.xml中添加电话服务权限) 如图所示这三个

Android开发之注册登录方法示例_Android

本文所述,继续上一篇关于Android端向服务器端发送数据的方法进一步完善注册登录的方法,由于版本问题出现一点瑕疵,今天经过调试已经解决,在这里给大家介绍一下. 在Android4.0以后版本的对于网络权限要求变得严格,致使上一篇所述的案例无法将数据发送到服务器端,当你一点击发送数据,Android控制台就会报错,错误当然是很让人头疼,基本上都是关于http的错误,所以可以肯定是Android虚拟机向服务器发送数据时出现了错误,经过一番检查与测试后才知道,4.0之后的版本,主线程中不允许调用网络

Android开发之使用GridView展示图片的方法_Android

本文实例讲述了Android使用GridView展示图片的方法.分享给大家供大家参考,具体如下: 今天说说GridView的使用. 所谓GvidView翻译过来就是网格布局:是一个ViewGroup以网格显示它的子视图(view)元素,即二维的.可滚动的网格.网格元素通过ListAdapter自动插入到网格. 这个GridView用处特别多,我这里是用来展示广告的.2*3的广告位置. 废话少说先看个效果图,有图就可以说个XX,对吧,大家都懂的. 大家可以看到搜索下面的那6个块,效果布局还行吧,哈