/** * 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 &¶ms.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 &¶ms.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; } }
详细解决方案
android上联网
热度:39 发布时间:2016-05-01 17:22:37.0
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- c#c++,android,ios(iphone),php,java视屏课程 散分
- android Post文件到ASP.NET的有关问题,能收到参数收不到文件
- RIM 替 Android 开发者提供免费的 PlayBook!2月13日前
- android 动态设立控件高度
- Android test project 编译方法
- android -相机使用教程(1)解决方法