Android开发之从网络(Intent)获取和发送数据
2014-04-18 22:42
399 查看
// // public class DataService { /** * 通过get请求提交数据到服务器 * * @param path * 服务器servlet的地址 * @param name * 用户名 * @param password * 密码 * @return 服务器返回回来的string数据 */ // get 一次提交的数据量小于4K public static String sendDataByGet(String path, String name, String password) throws Exception { String param1 = URLEncoder.encode(name); String param2 = URLEncoder.encode(password); URL url = new URL(path + "?name=" + param1 + "&password=" + param2); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setReadTimeout(5000);//设置超时时间为5s // 获取服务器返回的流信息 InputStream is = conn.getInputStream(); byte[] result = StreamTool.getBytes(is); return new String(result); } /** * 采用post的方式 提交数据到服务器 * * @param path * 服务器servlet的地址 * @param name * 用户名 * @param password * 密码 * @return 服务器返回的数据信息 * @throws Exception */ // post 可以提交比较大的数据 public static String sendDataByPost(String path, String name, String password) throws Exception { String param1 = URLEncoder.encode(name); String param2 = URLEncoder.encode(password); URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); String data = "name=" + param1 + "&password=" + param2; conn.setRequestMethod("POST"); conn.setConnectTimeout(5000); // 设置 http协议可以向服务器写数据 conn.setDoOutput(true); // 设置http协议的消息头 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Content-Length", data.length() + ""); // 把准备好的data数据写给服务器 OutputStream os = conn.getOutputStream(); os.write(data.getBytes()); // httpurlconnection 底层实现 outputstream 是一个缓冲输出流 // 只要我们获取任何一个服务器返回的信息 , 数据就会被提交给服务器 , 得到服务器返回的流信息 int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); byte[] result = StreamTool.getBytes(is); return new String(result); } else { throw new IllegalStateException("服务器状态异常"); } } /** * httpclient 浏览器的简单包装 * new HttpClient 就相当于得到了一个浏览器 */ public static String sendDataByHttpClientGet (String path , String name,String password) throws Exception{ //1. 获取到一个浏览器的实例 HttpClient client = new DefaultHttpClient(); //2. 准备请求的地址 String param1 = URLEncoder.encode(name); String param2 = URLEncoder.encode(password); HttpGet httpGet = new HttpGet(path + "?name=" + param1 + "&password=" + param2); HttpResponse ressponse = client.execute(httpGet); int code = ressponse.getStatusLine().getStatusCode(); if(code == 200){ InputStream is =ressponse.getEntity().getContent(); byte[] result = StreamTool.getBytes(is); return new String(result); } else{ throw new IllegalStateException("服务器状态异常"); } } public static String sendDataByHttpClientPost(String path , String name,String password) throws Exception{ //1. 获取到一个浏览器的实例 HttpClient client = new DefaultHttpClient(); //2. 准备要请求的 数据类型 HttpPost httppost = new HttpPost(path); // 键值对 List< NameValuePair> parameters = new ArrayList(); parameters.add(new BasicNameValuePair("name", name)); parameters.add(new BasicNameValuePair("password", password)); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8"); //3.设置post请求的数据实体 httppost.setEntity(entity); //4. 发送数据给服务器 HttpResponse ressponse = client.execute(httppost); int code = ressponse.getStatusLine().getStatusCode(); if(code == 200){ InputStream is =ressponse.getEntity().getContent(); byte[] result = StreamTool.getBytes(is); return new String(result); } else{ throw new IllegalStateException("服务器状态异常"); } } /** * 提交数据给服务器 带一个文件 * @param path * @param name * @param password * @param filepath 文件在手机上的路径 * * @return * @throws Exception */ public static String sendDataByHttpClientPost(String path , String name,String password ,String filepath) throws Exception{ // 实例化上传数据的 数组 part [] Part[] parts = {new StringPart("name", name), new StringPart("password", password), new FilePart("file", new File(filepath))}; PostMethod filePost = new PostMethod(path); filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams())); org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient(); client.getHttpConnectionManager().getParams() .setConnectionTimeout(5000); int status = client.executeMethod(filePost); if(status==200){ System.out.println( filePost.getResponseCharSet()); String result = new String(filePost.getResponseBodyAsString()); String ha = new String ( result.getBytes("ISO-8859-1"),"UTF-8"); System.out.println(ha); System.out.println("--"+result); return result; } else{ throw new IllegalStateException("服务器状态异常"); } } }
相关文章推荐
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android开发17——获取网络资源之XML数据
- Android之网络----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android网络开发之实时获取最新数据
- Android开发17——获取网络资源之XML数据
- Android之网络----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android开发18——获取网络资源之json数据
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- android开发之获取网络数据
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android网络开发之实时获取最新数据
- Android开发18——获取网络资源之json数据
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android开发18——获取网络资源之json数据
- android开发之获取网络数据
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android应用开发之获取网络数据