package org.crazyit.net;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class HttpClientTest extends Activity{TextView response;HttpClient httpClient;Handler handler = new Handler(){public void handleMessage(Message msg){if(msg.what == 0x123){// 使用response文本框显示服务器响应response.append(msg.obj.toString() + "\n");}}};@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 创建DefaultHttpClient对象httpClient = new DefaultHttpClient();response = (TextView) findViewById(R.id.response);}public void accessSecret(View v){response.setText("");new Thread(){@Overridepublic void run(){// 创建一个HttpGet对象HttpGet get = new HttpGet("https://mail.qq.com/cgi-bin/loginpage");  //①try{// 发送GET请求HttpResponse httpResponse = httpClient.execute(get);//②HttpEntity entity = httpResponse.getEntity();if (entity != null){// 读取服务器响应BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));String line = null;while ((line = br.readLine()) != null){Message msg = new Message();msg.what = 0x123;msg.obj = line;handler.sendMessage(msg);}}}catch (Exception e){e.printStackTrace();}}}.start();}public void showLogin(View v){// 加载登录界面final View loginDialog = getLayoutInflater().inflate(R.layout.login, null);// 使用对话框供用户登录系统new AlertDialog.Builder(HttpClientTest.this).setTitle("登录系统").setView(loginDialog).setPositiveButton("登录",new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog,int which){// 获取用户输入的用户名、密码final String name = ((EditText) loginDialog.findViewById(R.id.name)).getText().toString();final String pass = ((EditText) loginDialog.findViewById(R.id.pass)).getText().toString();new Thread(){@Overridepublic void run(){try{HttpPost post = new HttpPost("https://mail.qq.com/cgi-bin/loginpage");//③// 如果传递参数个数比较多的话可以对传递的参数进行封装List<NameValuePair> params = newArrayList<NameValuePair>();params.add(new BasicNameValuePair("name", name));params.add(new BasicNameValuePair("pass", pass));// 设置请求参数post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));// 发送POST请求HttpResponse response = httpClient.execute(post);  //④// 如果服务器成功地返回响应if (response.getStatusLine().getStatusCode() == 200){String msg = EntityUtils.toString(response.getEntity());Looper.prepare();// 提示登录成功Toast.makeText(HttpClientTest.this,msg, Toast.LENGTH_SHORT).show();Looper.loop();}}catch (Exception e){e.printStackTrace();}}}.start();}}).setNegativeButton("取消", null).show();}}



<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"><Button  android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/get"android:onClick="accessSecret"/><Button  android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/login"android:onClick="showLogin"/></LinearLayout><TextView  android:id="@+id/response"android:layout_width="fill_parent" android:layout_height="fill_parent"android:gravity="top" android:background="#ffff"android:textColor="#f000"android:textSize="16dp"/></LinearLayout>

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextView  android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="@string/name"/><EditText  android:id="@+id/name"android:layout_width="fill_parent" android:layout_height="wrap_content"/></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextView  android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="@string/pass"/><EditText  android:id="@+id/pass"android:layout_width="fill_parent" android:layout_height="wrap_content"/></LinearLayout></LinearLayout>


更多相关文章

  1. Android 通过intent 传递对象
  2. android连接服务器下载文件工具类
  3. Android 实现一个http 带参数登录
  4. Socket通信:Linux服务器与多个Android客户端
  5. 服务器向Android写一个对象
  6. Android与(Servlet)服务器交互
  7. Android与PHP服务器交互
  8. android web服务器

随机推荐

  1. Android OTA差分包升级失败 img sha 验证
  2. PHP如何检测手机是什么系统?
  3. 4.18.2 android实现断点续传
  4. “android list targets 无target显示”
  5. Android Studio 中module需要单独引用jdk
  6. Android中的onTouch()事件如何区分单击事件
  7. 判断scrollview中某子控件是否可见
  8. android studio gradle依赖库使用国内资
  9. Android集成React Native实现多Tab页
  10. Android标题头滑动渐变,Titlebar滑动渐变,