您的位置:首页 > 其它

关于 GET 和 POST 请求的简单示例

2015-12-07 12:27 471 查看
MainActivity.java :

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"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: