android中的HttpUrlConnection的使用之三

这一次, 我写的是关于web服务器在eclipse for JAVAEE 上面搭建和使用HttpUrlConnection来进行简单的数据传输。

1.首先我们下载javaEE,在eclipse的官网就能下载得到。JAVAEE的好处在于,它可以进行简单的服务器的搭建,因为软件里面就有相关的插件。

关于插件的使用,在此我简单的说明一下:当我们把JAVA EE安装完成过后,打开在Windows选项中选择preferences,在选择Server下面的RunTime Environments。这里最主要的是利用JAVA EE来创建一个本地的服务器,因此再在RunTime Environments 里面选择add,来增加一个服务器。其次在随意的选择一个Apache Tomcat的版本,完成过后点击next,然后又出现两个选择栏,第一个是名字不用管它,第二是让你选择一个服务器的插件,此时需要你自己在网络上下载一个插件,最好是跟你的选择的apache Tomcat版本差不多的,这个是Apache Tomcat 的官网:http://tomcat.apache.org/。下载完成过后,解压,得到一个文件夹,然后回到JAVA EE当中,将刚刚解压后的文件夹加进去。最后点击finish就行了。

2.其次,在eclipse中创建一个Dynamic web Project。然后运行一下,你会发现多了一个Servers的文件夹。如果之前就有这个文件夹, 就不会再出现一个,也就是工程栏只可能有Server的文件夹。

3.新建一个Servlet工程,名字可以随便取。等工程创建成功过后,代码显示区会增加一个java文件,里面有很多的方法。我这里简单的重写了这两个方法,红色的部分就是我重写的部分。其他的都没有动。

java代码

 1 package com.java.Servlet;
 2
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10
11 /**
12  * Servlet implementation class Servlet
13  */
14 public class Servlet extends HttpServlet {
15     private static final long serialVersionUID = 1L;
16
17     /**
18      * @see HttpServlet#HttpServlet()
19      */
20     public Servlet() {
21         super();
22         // TODO Auto-generated constructor stub
23     }
24
25     /**
26      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
27      */
28     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
29         //调用下面的doPost方法
30         this.doPost(request, response);
31     }
32
33     /**
34      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
35      */
36     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         //从request中分别获得name age属性
38         String name = request.getParameter("name");
39         String age = request.getParameter("age");
40         PrintWriter pw = response.getWriter();
41         //再网页上显示相应的信息
42         pw.println("name = " + name + " age = " + age);
43         //在控制上显示相应的信息
44         System.out.println("name = " + name);
45         System.out.println("age = " + age);
46     }
47
48 }

4.然后在创建一个JSP File。

JSP代码

 1 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 2     pageEncoding="ISO-8859-1"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <%--action表示的是我们要给哪一个servlet提交数据 所以这个action 就是先前我们创建servlet的名字--%>
11     <%-- method表示的是提交数据的方式--%>
12     <%--其他就是HTML里面的知识了 --%>
13     <form action="Servlet" method = "get">
14     name:<input type = "text" name = "name"><br>
15     age:<input type = "text" name = "age"><br>
16     submit:<input type = "submit" value = "submit"><br>
17     </form>
18 </body>
19 </html>

4.然后在运行一下整个工程。我们可以看到出现了相关的页面,而不是之前的404了。我们可以示范的在输入框里面输入相应的值,在点击submitt,会看到在控制台和页面上都相应的显示了相关信息。

上面的我只是简单的说明了一下,怎么在java EE上搭建一个简单的服务器。下面我将简单说明一下,怎么将我们写的相关的APP与刚刚搭建的服务器相连接,进行简单的数据传输。

1.首先得创建一个android工程,这个是必要的,我也不必赘述。

xml代码

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="com.example.android_client.MainActivity" >
 7
 8     <LinearLayout
 9         android:orientation="horizontal"
10         android:layout_width="fill_parent"
11         android:layout_height="wrap_content" >
12
13         <TextView
14             android:layout_marginLeft="10dp"
15             android:id="@+id/textview_name"
16             android:layout_width="wrap_content"
17             android:layout_height="wrap_content"
18             android:text="@string/textview_name" />
19         <EditText
20             android:id="@+id/edittext_name"
21             android:layout_marginLeft="10dp"
22             android:layout_width="fill_parent"
23             android:layout_height="wrap_content"
24             />
25     </LinearLayout>
26         <LinearLayout
27         android:orientation="horizontal"
28         android:layout_width="fill_parent"
29         android:layout_height="wrap_content" >
30
31         <TextView
32             android:layout_marginLeft="10dp"
33             android:id="@+id/textview_age"
34             android:layout_width="wrap_content"
35             android:layout_height="wrap_content"
36             android:text="@string/textview_age" />
37         <EditText
38             android:id="@+id/edittext_age"
39             android:layout_marginLeft="10dp"
40             android:layout_width="fill_parent"
41             android:layout_height="wrap_content"
42             />
43     </LinearLayout>
44     <Button
45         android:id="@+idtton"
46         android:layout_width="fill_parent"
47         android:layout_height="wrap_content"
48         android:text="@stringtton_string"
49         />
50 </LinearLayout>

2.在工程里面创建一个新的线程类

Java代码

 1 package com.example.android_client;
 2
 3 import java.io.BufferedReader;
 4 import java.io.InputStreamReader;
 5 import java.net.HttpURLConnection;
 6 import java.net.URL;
 7
 8 import android.util.Log;
 9
10 public class HttpThread extends Thread{
11     String name = null;
12     String age = null;
13     String url = null;
14     public HttpThread(String name, String age, String url)
15     {
16         this.name = name;
17         this.age = age;
18         this.url = url;
19     }
20     public void run() {
21         try {
22             DoGet();
23         } catch (Exception e) {
24             // TODO Auto-generated catch block
25             e.printStackTrace();
26         }
27
28     }
29     private void DoGet() throws Exception
30     {
31         Log.i("main", "1");
32         url = url + "?name=" +name + "&age=" + age;
33         URL url = new URL(this.url);
34         Log.i("main", "2");
35         HttpURLConnection httpurlconnection = (HttpURLConnection) url.openConnection();
36         httpurlconnection.setRequestMethod("GET");
37         httpurlconnection.setReadTimeout(5000);
38         BufferedReader br = new BufferedReader(new InputStreamReader(httpurlconnection.getInputStream()));
39         StringBuffer sb = new StringBuffer();
40         String string = null;
41         while((string = br.readLine()) != null)
42         {
43             sb.append(string);
44         }
45         Log.i("main", sb.toString());
46         System.out.println(sb.toString());
47     }
48 }

3.activity里面的代码

java代码

 1 package com.example.android_client;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.view.View.OnClickListener;
 7 import android.widget.Button;
 8 import android.widget.EditText;
 9
10 public class MainActivity extends Activity  implements OnClickListener{
11     private Button button = null;
12     private EditText edittext_name = null;
13     private EditText edittext_age = null;
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17         button = (Button) findViewById(R.id.button);
18         edittext_name = (EditText) findViewById(R.id.edittext_name);
19         edittext_age = (EditText) findViewById(R.id.edittext_age);
20         button.setOnClickListener(this);
21     }
22     public void onClick(View v) {
23         //这里面的IP地址根据服务器的IP改变而改变
24         String url = "http://222.196.200.172:8080/web/Servlet";
25         new HttpThread(edittext_name.getText().toString(), edittext_age.getText().toString(), url).start();
26     }
27 }

这样,我们就简单的实现了,自己app与自己搭建的服务器相连接并且可以进行简单的数据传输。

时间: 2024-08-01 17:04:54

android中的HttpUrlConnection的使用之三的相关文章

android中的HttpUrlConnection的使用之一

在我们之前学习Java的网络编程当中,我们已经见过HttpUrlConnection类的使用.HttpUrlConnect在Java是一个支持http特定的功能一个类,在许多的网络编程经常使用到它.今天我在这里记录的是android中使用HttpUrlConnection,之前我还学过使用异步加载来加载一个网站,它使用的原理同样是多线程,但是它使用的是用json来解析一个网站,而不是直接使用域名也就是网址来解析一个网站,而将要介绍的HttpUrlConnection是使用域名来解析一个网站的,当

android中的HttpURLConnection和HttpClient实现app与pc数据交互

自学android的这几天很辛苦,但是很满足,因为每当学到一点点知识点都会觉得很开心,觉得今天是特别有意义的,可能这个就是一种莫名的热爱吧. 下面来说说今天学习的HttpURLConnection和HttpClient的区别吧,其实这2种都能进行客户端和服务器的数据交互,只是HttpClient封装的更完全. 先看下案例吧 第一种HttpURLConnection访问服务器: 客服端代码: package com.example.demo01; import java.io.IOExceptio

Android中,HttpURLConnection与Apache的DefaultHttpClient哪个更被推荐使用?

在Android中,请求网络资源的方式包含了:HttpURLConnection和Apache的DefaultHttpClient.那么,这两个方式哪个更被推荐使用呢?Android官方文档为我们推荐HttpURLConnection,而理由是什么呢? 在Android 4.0,为HttpURLConnection增加了一个response cache(响应缓存),这是一个很好的减少http请求次数的机制,Android官方推荐使用HttpURLConnection而不是Apache的Defau

Android中使用HttpURLConnection实现GET POST JSON数据与下载图片

Android6.0中把Apache HTTP Client所有的包与类都标记为deprecated不再建议使用 所有跟HTTP相关的数据请求与提交操作都通过HttpURLConnection类实现,现实是 很多Android开发者一直都Apache HTTP Client来做andoird客户端与后台HTTP接口数 据交互,本人刚刚用HttpURLConnection做了一个android的APP,不小心踩到了几个 坑,总结下最常用的就通过HttpURLConnection来POST提交JSO

Android中使用HttpURLConnection和HttpClient实现GET和POST请求访问网络

HttpURLConnection中的GET import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net

[Android基础]Android中使用HttpURLConnection

HttpURLConnection继承了URLConnection,因此也能够向指定站点发送GET请求.POST请求.它在URLConnetion的基础上提供了例如以下便捷的方法. int getResponseCode():获取server的响应代码. String getResponseMessage():获取server的訪问信息. String getRequestMethod():获取发送请求的方法. void setRequestMethod(String method):设置发送请

android中的HttpUrlConnection的使用之五

在使用之三中,我简单的介绍一下,get方式传递数据,而这里我将简单的介绍一下post方式.至于get方式与post方式有什么不同,我先卖一个关子,等我先把两个方式的关键代码贴出来,我再来说明这两种方式的不同和优缺点. java代码(首先说明一下,下面的代码都是客户端的代码,也就是手机端的代码) get方式的代码(出自使用之三) 1 private void DoGet() throws Exception 2 { 3 Log.i("main", "1"); 4 ur

Android中高效的显示图片之三——缓存图片

加载一张图片到UI相对比较简单,如果一次要加载一组图片,就会变得麻烦很多.像ListView,GridView,ViewPager等控件,需要显示的图片和将要显示的图片数量可能会很大. 为了减少内存使用,这类控件都重复利用移出屏幕的子视图,如果你没有持用引用,垃圾回收器也会回收你加载过的图片.这种做法很好,但是如果想要图片加载快速流畅且不想当控件拖回来时重新运算获取加载过的图片,通常会使用内存和磁盘缓存.这节主要介绍当加载多张图片时利用内存缓存和磁盘缓存使加载图片时更快. 一.使用内存缓存 内存

android 中设置HttpURLConnection 超时并判断是否超时

设置超时: URL url1 = new URL(url); HttpURLConnection conn = (HttpURLConnection) url1.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(3000); //3s conn.setReadTimeout(3000); //3s conn.setDoOutput(true); 本来以为设置了超时程序就会自动返回,不会有异常了