首页 > 代码库 > android中的HttpUrlConnection的使用之三

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 Servlet13  */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 stub23     }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         <TextView14             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         <LinearLayout27         android:orientation="horizontal"28         android:layout_width="fill_parent"29         android:layout_height="wrap_content" >30 31         <TextView32             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 block25             e.printStackTrace();26         }27         28     }29     private void DoGet() throws Exception30     {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与自己搭建的服务器相连接并且可以进行简单的数据传输。

 

android中的HttpUrlConnection的使用之三