Android HTTP操作

来源:互联网 发布:淘宝复古女装店铺 编辑:程序博客网 时间:2024/04/30 18:04

首先,这种网络的请求肯定是在线程中操作的,可以是

MyRunable runable =  new MyRunable();Thread thread = new Thread(runable);thread.start();class MyRunable implements Runnable {//http的操作写在这里}

传送方式有两种,一种get,一种post。涉及到HttpEntity详见本博客关于HttpEntity的描述

post

boolean loginValidate = false; //用于判断请求是否成功// 使用apache HTTP客户端实现HttpPost request = new HttpPost(urlStr); //生成一个HttpPost类,表示我现在是要用Post方式发送内容// 如果传递参数多的话,可以对传递的参数进行封装  NameValuePair是Apache的一个简单封装类,也可以用map作为参数List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("uid", Data.uid+""));params.add(new BasicNameValuePair("content", content));try {HttpEntity requestHttpEntity = new UrlEncodeFormEntiry(params, HTTP.UTF_8); //把参数数据封装在HttpEntity中,在post中,数据都是同过这种方式封装的// 设置请求参数项request.setEntity(requestHttpEntity);   //将请求的内容封装在request中HttpClient client = getHttpClient();//见关于HttpClient的函数内容 HttpResponse response = client.execute(request); // 执行请求返回相应// 判断是否请求成功if (response.getStatusLine().getStatusCode() == 200) {loginValidate = true;HttpEntity responehttpEntity = response.getEntity();  //从响应中重新获取HttpEntity类  // 获得响应信息,result即为返回结果result = EntityUtils.toString(responehttpEntity);  //将响应内容转为字符串,也就是最原始的JSON格式数据inputStream = responehttpEntity.getContent(); //可以将内容直接转为流来处理}} catch (Exception e) {e.printStackTrace();}return loginValidate;

get

<span style="white-space:pre"></span>String url = baseUrl + "?" + "name=" + "zhangsan" + "&age=" + "20";  //直接将请求参数写在url中HttpGet requestt = new HttpGet(url);  //直接封装HttpClient httpClient = getHttpClient();//见关于HttpClient的函数内容 try {HttpResponse response = httpClient.execute(request); // 执行请求返回相应HttpEntityhttpEntity = httpResponse.getEntity();//从响应中重新获取HttpEntity类 // 获得响应信息,result即为返回结果result = EntityUtils.toString(responehttpEntity);  //将响应内容转为字符串,也就是最原始的JSON格式数据inputStream = responehttpEntity.getContent(); //可以将内容直接转为流来处理,记得关闭inputStream}} catch (Exception e) {e.printStackTrace();}

httpClient相关操作

// 初始化HttpClient,并设置超时public HttpClient getHttpClient() {BasicHttpParams httpParams = new BasicHttpParams(); //httpClient的设置类HttpConnectionParams.setConnectionTimeout(httpParams, 5000); //设置连接过去的超时时间 。如果超时 返回 <span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', 微软雅黑, arial, 宋体, sans-serif; line-height: 24px; text-align: justify;"><span style="font-size:10px;">org.apache.commons.httpclient.ConnectTimeoutException:</span></span>HttpConnectionParams.setSoTimeout(httpParams, 10000); //<span style="font-family: Arial, Helvetica, sans-serif;">设置连返回结果的超时时间 ,<span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei', 微软雅黑, arial, 宋体, sans-serif; line-height: 24px; text-align: justify;"><span style="font-size:10px;">java.net.SocketTimeoutException: Read timed out</span></span></span>HttpClient client = new DefaultHttpClient(httpParams); //一定要加上这两个超时时间,不然可能就完蛋了return client;}


0 0
原创粉丝点击