Android开发使用GET方式向服务器请求和发送数据
#1.首先先用新建个servlet处理登陆请求
代码如下。只实现了doGet方法
package com.wzw.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class LoginServlet */ public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String password=request.getParameter("password"); if(username.equals("admin")&&password.equals("123456")){ response.getWriter().println("success"); }else{ response.getWriter().println("failed"); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
#2.在安卓布局文件中,布局如下,两个输入框和按钮
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:layout_marginTop="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/et_username" android:hint="请输入名字"/> <EditText android:layout_marginTop="10dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/et_password" android:hint="请输入密码"/> <Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:onClick="doGet" android:text="GET方式提交"/> </LinearLayout>
#3.在main_activity中,实现具体的代码
package com.wzw.submitdata; import com.wzw.submitdata.utils.NetUtil; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText etUsername; private EditText etPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etUsername = (EditText) findViewById(R.id.et_username); etPassword = (EditText) findViewById(R.id.et_password); } public void doGet(View v){ final String username=etUsername.getText().toString(); final String password=etPassword.getText().toString(); new Thread(new Runnable() { @Override public void run() { //访问网络要在子线程中实现,使用get取数据 final String state=NetUtil.loginOfGet(username, password); //执行在主线程上 runOnUiThread(new Runnable() { public void run() { //就是在主线程上操作,弹出结果 Toast.makeText(MainActivity.this, state, 0).show(); } }); } }).start(); } }
#4.另外新建一个访问网络的小工具类
package com.wzw.submitdata.utils; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class NetUtil { /** * 使用GET访问去访问网络 * @param username * @param password * @return 服务器返回的结果 */ public static String loginOfGet(String username,String password){ HttpURLConnection conn=null; try { String data="username="+username+"&password="+password; URL url=new URL("http://192.168.1.4:8080/AndroidServer/LoginServlet?"+data); conn=(HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(10000); conn.setReadTimeout(5000); conn.connect(); int code=conn.getResponseCode(); if(code==200){ InputStream is=conn.getInputStream(); String state=getStringFromInputStream(is); return state; } } catch (Exception e) { e.printStackTrace(); }finally{ if(conn!=null){ conn.disconnect(); } } return null; } /** * 根据输入流返回一个字符串 * @param is * @return * @throws Exception */ private static String getStringFromInputStream(InputStream is) throws Exception{ ByteArrayOutputStream baos=new ByteArrayOutputStream(); byte[] buff=new byte[1024]; int len=-1; while((len=is.read(buff))!=-1){ baos.write(buff, 0, len); } is.close(); String html=baos.toString(); baos.close(); return html; } }
这样就可以向服务器请求数据了
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。