/**      * HTTP请求      * @author  hsz     *      */      public class HttpRequest       {          /**      * 通过URL和URLConnection get方式提交参数给服务器      * @param path      * @param params      * @param enc      * @return      * @throws Exception      */      private static boolean sendGETRequest (String path,    Map<String, String> params) throws Exception{          //发送地http://192.168.100.91:8080/videoService          ///login?username=abc&password=123          // StringBuilder是用来组拼请求地址和参数          StringBuilder sb = new StringBuilder();          sb.append(path).append("?");          if(params!=null &&params.size()!=0){             for (Map.Entry<String, String> entry : params.entrySet()) {//如果请求参数中有中文,需要进行URLEncoder编码                    sb.append(entry.getKey()).append("=")                    .append(URLEncoder.encode(entry.getValue(), "utf-8"));                    sb.append("&");                                       }             sb.deleteCharAt(sb.length()-1);          }          URL url = new URL(sb.toString());          HttpURLConnection conn = (HttpURLConnection) url.openConnection();          conn.setConnectTimeout(5000);          conn.setRequestMethod("GET");          if(conn.getResponseCode()==200){                         return true;          }          return false;       }      /**       *我们先从IE浏览器中使用POST方法发送一次:(下面内容可以用HttpWatch看到) *POST /videoService/login HTTP/1.1 *Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg,  *application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint,  *application/msword, application/QVOD, application/QVOD, *Referer: http://192.168.100.91:8080/videoService/login.jsp*Accept-Language: zh-CN,en;q=0.5*User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; *.NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)*Content-Type: application/x-www-form-urlencoded//POST请求这个一定要设置*Accept-Encoding: gzip, deflate*Host: 192.168.100.91:8080*Content-Length: 26//还有发送内容长度也要设置*Connection: Keep-Alive*Cache-Control: no-cache*Cookie: JSESSIONID=7E1435CB8A071D07A430453250348C41*username=asd&password=1234//这里是请求体部分,一共26个字节,与Content-Length长度一样*//**      * 通过URL和URLConnection post方式提交参数给服务器      * @param path      * @param params      * @param enc      * @return      * @throws Exception      */  private static boolean sendPOSTRequest(String path,Map<String, String> params) throws Exception{// StringBuilder是用来组拼请求参数            StringBuilder sb = new StringBuilder();            if(params!=null &&params.size()!=0){               for (Map.Entry<String, String> entry : params.entrySet()) {                      sb.append(entry.getKey()).append("=")                      .append(URLEncoder.encode(entry.getValue(), "utf-8"));                      sb.append("&");                                         }               sb.deleteCharAt(sb.length()-1);            }// entity为请求体部分内容//如果有中文则以UTF-8编码为username=%E4%B8%AD%E5%9B%BD&password=123            byte[] entity = sb.toString().getBytes();            URL url = new URL(path);            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            conn.setConnectTimeout(5000);            conn.setRequestMethod("POST");//要向外输出数据,要设置这个            conn.setDoOutput(true);            //内容类型Content-Type: application/x-www-form-urlencoded              //内容长度Content-Length:              conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");            conn.setRequestProperty("Content-Length", entity.length+"");            OutputStream os = conn.getOutputStream();//以POST方式发送请求体,这时才真正开始联网            os.write(entity);            if(conn.getResponseCode()==200){                   return true;            }            return false;       }/**  *在遇上HTTPS安全模式或者操作cookie的时候使用HTTPclient会方便很多,也是android内部集成的         * 使用HTTPClient(开源项目)向服务器提交参数   */private static boolean sendPOSTRequestHttpClient(String path,Map<String, String> params) throws Exception{  //封装请求参数  List<NameValuePair> pair = new ArrayList<NameValuePair>();  if(params!=null&& !params.isEmpty()){   for(Map.Entry<String, String> entry:params.entrySet()){    pair.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));   }  }  //把请求参数变成请求体部分  UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8");  //使用HttpPost对象设置发送的URL路径  HttpPost post = new HttpPost(path);  //发送请求体  post.setEntity(uee);  //创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息  DefaultHttpClient dhc = new DefaultHttpClient();  //执行post请求  HttpResponse response = dhc.execute(post);  if(response.getStatusLine().getStatusCode()==200){   Log.i("http", "httpclient");      //获取返回实体   HttpEntity httpEntity = response.getEntity();   return true;  }  return false; }} 

更多相关文章

  1. Android: 用Instrumentation类发送鼠标或按键事件
  2. android发送QQ邮件(带附件)
  3. android群发短信时判断短信是否发送成功
  4. android 微信登录
  5. Android(安卓)发送通知
  6. Android4.0中修改挂断键(ENDCALL)的默认行为
  7. Android(安卓)intent 传递数组对象序列化
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. Python技巧匿名函数、回调函数和高阶函数

随机推荐

  1. Android 7.1 隐藏底部状态栏 和去掉默认
  2. android textview 点击变字
  3. 如何设置Android中TextView的行间距
  4. Android 启动项 Activity
  5. Android(安卓)UI控件之CheckBox实现墨迹
  6. android 虚拟机下面 安装apk文件
  7. android 监听系统时区变化,日期变化,时间变
  8. Android Studio之RenderingException错误
  9. android webview 保存cookie
  10. android RadioButton文字居中的方法