首页 > 代码库 > 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的使用之三