赵雅智_android http get请求
时间:2014-05-23 02:08:42
收藏:0
阅读:392
<!-- 添加网络访问权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
布局文件 activity_login.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_alignBaseline="@+id/editusername"
android:text="@string/username"/>
<EditText
android:id="@+id/editusername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/username"
android:hint="@string/edit_username"
/>
<TextView
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_below="@+id/username"
android:layout_alignBaseline="@+id/editpass"
android:text="@string/password"/>
<EditText
android:id="@+id/editpass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/password"
android:layout_below="@+id/editusername"
android:hint="@string/edit_password"
/>
<Button
android:id="@+id/btn_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:layout_below="@+id/password"
android:layout_marginLeft="50dp"
android:text="@string/btn_sure"
android:onClick="login"
/>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_alignBaseline="@+id/btn_login"
android:layout_below="@+id/editpass"
android:layout_toRightOf="@+id/btn_login"
android:text="@string/checkbox"
/>
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="@string/tip_result"/>
</RelativeLayout> String.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">lesson03</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="username">用户名</string>
<string name="password">密 码</string>
<string name="edit_username">请输入用户名</string>
<string name="edit_password">请输入密码</string>
<string name="btn_sure">确定</string>
<string name="checkbox">是否记住密码</string>
<string name="tip_result">服务器返回的数据</string>
</resources>
流转字符工具类 StreamTools.java
package com.example.util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamTools {
/**
* 把流轉換成字符串
* @param is
* @return
*/
public static String streamToStr(InputStream is){
try {
// 字节的输出流
ByteArrayOutputStream os = new ByteArrayOutputStream();
// 定义读取长度
int len = 0;
// 定义缓冲区
byte buffer[] = new byte[1024];
// 从输入流中读取,并写入os对象中
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
// 关闭流
is.close();
os.close();
// 写到字节流
return new String(os.toByteArray());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
Activity类 LoginActivity.java
package com.example.android_http;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.example.util.StreamTools;
public class LoginActivity extends Activity {
private EditText et_username;
private EditText et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
findView();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login, menu);
return true;
}
public void findView() {
et_password = (EditText) findViewById(R.id.editpass);
et_username = (EditText) findViewById(R.id.editusername);
}
public void login(View v) {
// 获取点击控件的id
int id = v.getId();
// 根据id进行判断
switch (id) {
case R.id.btn_login:// 进行登录操作
// Toast.makeText(getApplicationContext(), "--", 0).show();
// 获取用户名密码
final String userName = et_username.getText().toString();
final String userPass = et_password.getText().toString();
// 判断是否为空
if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(userPass)) {
Toast.makeText(getApplicationContext(), "用户名或者密码不能为空", 0)
.show();
} else {
Toast.makeText(getApplicationContext(), "發送請求道服務器", 0)
.show();
// 访问网络(需要一个网络的权限)
// 访问网络(好事操作)子线程,避免阻塞主线程UI
// http://172.16.237.200:8080/video/login.do?username=chj&userpass=123
// 所有耗時操作都要在子線程中
new Thread() {
public void run() {
try {
// 请求地址
String spec = "http://172.16.237.200:8080/video/login.do?username="
+ userName + "&userpass=" + userPass;
// 根据地址创建URL对象(网络访问url)
URL url = new URL(spec);
// 采用http协议打开的连接对象
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
urlConnection.setRequestMethod("GET");// 以get方式发起请求
urlConnection.setReadTimeout(5000);// 设置超时
urlConnection.setConnectTimeout(5000);// 设置连接超时
urlConnection
.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
// 获取相应的 code 400 200 505 302
if (urlConnection.getResponseCode() == 200) {
// 得到网络返回的输入流
InputStream is = urlConnection.getInputStream();
String result = StreamTools.streamToStr(is);
System.out.println("返回的数据是:" + result);
} else {
System.out.println("请求url失败");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
break;
default:
break;
}
}
}
评论(0)