关于 GET 和 POST 请求的简单示例
2015-12-07 12:27
471 查看
MainActivity.java :
链接网络的类:
LoginNet.java :
layout_main.xml :
还要在 AndroidManifest.xml 中注册权限:
package com.android.urinet; import com.android.urigetpost.LoginNet; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; @SuppressLint("ShowToast") public class MainActivity extends Activity { EditText edit1, edit2; Button bt1, bt2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edit1 = (EditText)findViewById(R.id.edit1); edit2 = (EditText)findViewById(R.id.edit2); bt1 = (Button)findViewById(R.id.bt1); bt2 = (Button)findViewById(R.id.bt2); bt1.setOnClickListener(new OnClickListener() { // GET @Override public void onClick(View v) { final String username = edit1.getText().toString(); final String password = edit2.getText().toString(); new Thread(new Runnable() { @Override public void run() { final String str = LoginNet.GetToNet( username, password, "http://10.0.2.2:8080/baidu/TestServlet"); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText( MainActivity.this, "返回的状态为:" + str, 0).show(); } }); } }).start(); } }); bt2.setOnClickListener(new OnClickListener() { // POST @Override public void onClick(View v) { final String username = edit1.getText().toString(); final String password = edit2.getText().toString(); new Thread(new Runnable() { @Override public void run() { final String str = LoginNet.PostToNet( username, password, "http://10.0.2.2:8080/baidu/TestServlet"); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText( MainActivity.this, "返回的状态为:" + str, 0).show(); } }); } }).start(); } }); } }
链接网络的类:
LoginNet.java :
package com.android.urigetpost; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; public class LoginNet { /** * 用 GET 方法登陆(先登录在传参数) * @param username 用户名 * @param password 用户密码 * @param uri * @return */ public static String GetToNet(String username, String password, String uri){ uri = uri + "?username=" + username + "&password=" + password; HttpURLConnection conn = FromNet(uri); try { conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setDoInput(true); conn.setRequestMethod("GET"); conn.connect(); if(conn.getResponseCode() == 200){ InputStream is = conn.getInputStream(); String content = getStringFromInputStream(is); return content; } } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * * @param is 为 conn 调用 getInputStream() 时返回的对象 * @return 把返回的流转换为字符串 */ private static String getStringFromInputStream(InputStream is) { byte[] buffer = new byte[1024]; ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { while((is.read(buffer, 0, buffer.length)) != -1){ baos.write(buffer); } return baos.toString(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 先传参数再登陆 * @param username * @param password * @param uri * @return */ public static String PostToNet(String username, String password, String uri){ HttpURLConnection conn = FromNet(uri); try { conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setDoInput(true); conn.setRequestMethod("POST"); OutputStream os = conn.getOutputStream(); conn.connect(); os.write(("username="+username + "&password=" + password).getBytes()); if (conn.getResponseCode() == 200){ String content = getStringFromInputStream(conn.getInputStream()); return content; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 获取 HttpURLConnection 的链接,并返回其对象 * @param uri 从前文传入参数 * @return conn */ public static HttpURLConnection FromNet(String uri){ try { URL url = new URL(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); return conn; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }
layout_main.xml :
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.android.urinet.MainActivity" > <EditText android:id="@+id/edit1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/text1" android:singleLine="true" android:textSize="10pt" android:background="@drawable/bg_border"/> <EditText android:id="@+id/edit2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/edit1" android:hint="@string/text2" android:singleLine="true" android:textSize="10pt" android:background="@drawable/bg_border" android:layout_marginTop="5dp"/> <Button android:id="@+id/bt1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/edit2" android:textSize="10pt" android:text="@string/text3" android:layout_marginTop="5dp"/> <Button android:id="@+id/bt2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/bt1" android:textSize="10pt" android:text="@string/text4" android:layout_marginTop="5dp"/> </RelativeLayout>
还要在 AndroidManifest.xml 中注册权限:
<uses-permission android:name="android.permission.INTERNET"/>
相关文章推荐
- iOS基础-选择空间Picker View的简单使用
- 国外对华反倾销与“非市场经济”问题的思考及应对
- CMake使用总结
- Git分支的创建与合并
- Android帧动画
- Delphi异常处理机制
- code manager toos TotoiseSVN解锁
- 我国外汇储备适度规模的动态研究
- PHP中Enum(枚举)用法实例详解
- 在OpenStack里如何用Ironic管理IBM Power8裸机
- 我国外汇储备适度规模再思考
- php数据转换,数据的实质总是十进制的。字符串
- 2015年科技巨头的十个开源产品,不只是.NET、Swift
- .Net下一个类型转换神器
- 关于我国外汇储备适度规模的分析思考
- Dynamics CRM Trace Reader for Microsoft Dynamics CRM
- 【2015ZUFE新生赛网络同步赛M】【DP 打表 二分】GW I (3) 暴力预处理+分类打表二分查找
- vsphere vmware 装系统
- js正则表达式
- Dynamics CRM Trace Reader for Microsoft Dynamics CRM