安卓学习--http请求

package cn.xm.hostrequest.biz;

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Header;
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 android.content.Context;
import android.widget.Toast;
import cn.xm.hostrequest.tools.StreamTools;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;

public class LoginService {

	public static boolean loginByGet(String path, String username,
			String password) {
		try {
			URL url = new URL(path + "?user="
					+ URLEncoder.encode(username, "utf-8") + "&pwd="
					+ URLEncoder.encode(password, "utf-8"));

			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setRequestMethod("GET");
			conn.setConnectTimeout(5000);

			int code = conn.getResponseCode();
			if (code == 200) {
				String response = StreamTools.readInputInputStream(conn
						.getInputStream());
				if (response != null && response.equals("true")) {

					return true;
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	public static boolean loginByPost(String path, String username,
			String password) {
		try {
			// 创建 url
			URL url = new URL(path);
			// 利用 url打开连接
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			// 设置 请求参数
			conn.setRequestMethod("POST"); // post 请求
			conn.setConnectTimeout(5000); // 连接超时时间
			conn.setDoOutput(true); // 充许写出输出流到 服务器
			// 拼装 post请求的数据
			String data = "user=" + URLEncoder.encode(username, "utf-8")
					+ "&pwd=" + URLEncoder.encode(password, "utf-8");
			// 设置 消息头
			conn.addRequestProperty("Content-Type",
					"application/x-www-form-urlencoded");
			// 设置数据长度
			conn.addRequestProperty("Content-Length", data.length() + "");
			// 取输出流 并写入数据
			OutputStream os = conn.getOutputStream();
			os.write(data.getBytes());
			// 执行请求 并取响应码
			int code = conn.getResponseCode();
			if (code == 200) {
				String response = StreamTools.readInputInputStream(conn
						.getInputStream());
				if (response != null && response.equals("true")) {

					return true;
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	public static boolean loginByClientPost(String path, String username,
			String password) {
		try {
			// 打开 httpClient == 打开浏览器
			HttpClient client = new DefaultHttpClient();
			// 设置 要 访问的 url == form 中的 action
			HttpPost post = new HttpPost(path);
			// 创建 post 数据 == form 中填写的数据
			List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
			parameters.add(new BasicNameValuePair("user", username));
			parameters.add(new BasicNameValuePair("pwd", password));
			// 设置数据
			post.setEntity(new UrlEncodedFormEntity(parameters, "utf-8"));
			// 发送请求并得到响应
			HttpResponse response = client.execute(post);
			// 获取响应码
			int code = response.getStatusLine().getStatusCode();
			if (code == 200) {
				String text = StreamTools.readInputInputStream(response
						.getEntity().getContent());
				if (text != null && text.equals("true")) {
					return true;
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	public static boolean loginByClientGet(String path, String username,
			String password) {
		try {
			// 打开httpclient==打开浏览器
			HttpClient client = new DefaultHttpClient();
			// 生成 要访问的 url == 输入地址
			HttpGet httpGet = new HttpGet(path);
			// 发送请求 == 敲回车
			HttpResponse response = client.execute(httpGet);
			// 取状态码
			int code = response.getStatusLine().getStatusCode();
			if (code == 200) {
				String text = StreamTools.readInputInputStream(response
						.getEntity().getContent());
				if (text != null && text.equals("true")) {
					return true;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	public static void loginByAsyncGet(final Context context, String path,
			String username, String password) {
		AsyncHttpClient client = new AsyncHttpClient();
		client.get(path + "?user=" + username + "&pwd=" + password,
				new AsyncHttpResponseHandler() {
					@Override
					public void onSuccess(int statusCode, Header[] headers,
							byte[] responseBody) {
						String text = new String(responseBody);
						if ("true".equals(text)) {
							Toast.makeText(context, "登陆成功", 0).show();
						} else {
							Toast.makeText(context, "登陆失败", 0).show();
						}

					}

					@Override
					public void onFailure(int statusCode, Header[] headers,
							byte[] responseBody, Throwable error) {
						Toast.makeText(context, "登陆失败", 0).show();
					}
				});
	}

	public static void loginByAsyncPost(final Context context, String path,
			String username, String password) {
		AsyncHttpClient client = new AsyncHttpClient();
		RequestParams parm = new RequestParams();
		parm.put("user", username);
		parm.put("pwd", password);
		client.post(path, parm, new AsyncHttpResponseHandler() {

			@Override
			public void onSuccess(int statusCode, Header[] headers,
					byte[] responseBody) {
				String text = new String(responseBody);
				if ("true".equals(text)) {
					Toast.makeText(context, "登陆成功", 0).show();
				} else {
					Toast.makeText(context, "登陆失败", 0).show();
				}

			}

			@Override
			public void onFailure(int statusCode, Header[] headers,
					byte[] responseBody, Throwable error) {
				Toast.makeText(context, "登陆失败", 0).show();
			}
		});
	}

}

 

安卓学习--http请求

时间: 2024-10-11 13:28:27

安卓学习--http请求的相关文章

[安卓学习]AndroidManifest.xml文件内容详解

一,重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

安卓学习第13课——BaseAdapter

BaseAdapter创建这么一个对象,需要些四个方法. int getCount(); Object getItem(int position); long getItemId(int position);View getView(int position, View convertView, ViewGroup parent);(1)列表中的项数(2)返回值的列表内容(3)获得postion处的列表项的ID(4)该列表项里的组件 package com.example.baseadapter

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

DICOM医学图像处理:storescp.exe与storescu.exe源码剖析,学习C-STORE请求

背景: 上一篇专栏博文中针对PACS终端(或设备终端,如CT设备)与RIS系统之间worklist查询进行了介绍,并着重对比分析了DICOM3.0中各部分对DICOM网络通讯服务的定义.此次通过结合早些时间的博文DICOM医学图像处理:基于DCMTK工具包学习和分析worklist,对DCMTK开源库中提供的storescp.exe和storescu.exe工具的源码进行剖析,从底层深入了解C-STORE服务的触发及响应. 分析思路: storescp.exe和storescu.exe分别充当着

DICOM医学图形处理:storescp.exe与storescu.exe源码剖析,学习C-STORE请求(续)

背景: 上一篇博文中,在对storescp工具源文件storescp.cc和DcmSCP类的源文件scp.cc进行剖析后,得出了两者都可以实现响应C-ECHO和C-STORE(需要对DcmSCP类进行扩展)请求的功能.但是在对DcmSCP类进行扩展,期望模拟实现自己的storescp.exe工具时遇到了问题,客户端提示服务中断链接,而服务端显示保存失败,如下图所示.此次博文通过排除该问题再一次对storescp.cc和scp.cc进行对比,主要从Presentation Context.Abst

安卓学习第12课——SimpleAdapter

SimpleAdapter一点也不简单,他的参数就带了5个,天哪,晕了.. 今天学的这个适配器, public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 看这个大概明白,参数分别是第一个:表示访问整个android应用程序接口,基本上所有的组件都需要,一般都写this(改天研究一下),第二个应该是这个List对象

安卓学习第9课——计时器chronometer

今天学习了钟表及计时器.. 我觉得AnalogClock和DigitalClock直接使用就可以.唯一需要知道的就是AnalogClock是可以修改表盘和分针时针的. 方法是android:dail及android:hand_minute和hand_hour. 下面介绍的是计时器的用法. 首先xml中只要放入一个chronometer和一个按钮即可.为的是是点击启动按钮,开始计时,20s停止. package com.example.chronometer; import android.app

安卓学习随笔 -- 自定义标题栏

在安卓中不喜欢系统默认的标题栏,那么如何让自定义一个自己的标题栏呢. 自定义后的标题栏如下: 首先这里需要定义一个自定义的标题栏布局 title.xml文件 (里边需要两个图片这个很简单) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fi