/**
* get方法使用
*/
private void httpGet() {
new Thread() {
@Override
public void run() {
            //此处的LOGIN是请求地址后面是拼接的参数
String path = LOGIN + "?phone=12345678900&password=123456";
URL url;
HttpURLConnection connection;
try {
url = new URL(path);
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(4000);//设置链接超时
connection.setRequestMethod("GET");//设置请求方法 connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//设置请求体的内容,处处默认也是一样表示请求的是文本内容 int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
final String s = stremToString(inputStream); runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
}
});
inputStream.close();
} } catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
    /**
* post方法
*/
private void httpPost(final Map<String, String> prams) {
new Thread() {
@Override
public void run() {
if (prams == null) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "缺少参数!", Toast.LENGTH_SHORT).show();
}
});
return;
}
URL url;
HttpURLConnection connection;
try {
//拼接传入的请求参数
StringBuffer buffer = new StringBuffer();
//读取传入的map集合里参数
for (Map.Entry<String, String> entry : prams.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
//拼接参数 例如:phone = 12345678900 & password = 123456
buffer.append(key + "=" + URLEncoder.encode(value, "utf-8") + "&");
}
//此处是删除末尾拼接的 & 符号
buffer.deleteCharAt(buffer.length() - 1);
//REGISTER 是我自己服务器的一个测试请求地址
url = new URL(REGISTER);
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(4000); //此处的输出流表示 服务器对客服端的响应输出流 即InPutStream
//此处的输入流表示 客服端向服务器输入数据即 OutPutStream
connection.setDoInput(true);//获取服务器的响应输出流 此处默认是true 可以不用设置
connection.setDoOutput(true);//设置允许向服务其写入数据,获取向服务器的输入流。
connection.setRequestMethod("POST");
//此处设置向服务器请求的内容 请求的是文本内容 默认是可以不用设置的
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//设置向服务器输入的请求体长度
connection.setRequestProperty("Content-Length", String.valueOf(buffer.toString().getBytes().length));
//向服务器写入请求体
connection.getOutputStream().write(buffer.toString().getBytes());
//获取请求状态吗 HttpURLConnection.HTTP_OK 为请求成功 写200 也可以的
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
final String result = stremToString(inputStream);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
}
});
inputStream.close();
} } catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
  /**
* 把输入流转换成字符串
*
* @param inputStream
* @return
* @throws IOException
*/
private String stremToString(InputStream inputStream) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
if (inputStream != null) {
int len;
byte[] bytes = new byte[1024];
while ((len = inputStream.read(bytes)) != -1) {
bos.write(bytes, 0, len);
}
return bos.toString();
} else {
return "";
}
}

最后 各位小伙伴们 又不懂或不清楚的可以给我留言 欢迎大家给我提出建议 或是指出问题 我们彼此都需要一个学习的过程

Android的HttpUrlConnection类的GET和POST请求的更多相关文章

  1. Android基于HttpUrlConnection类的文件下载

    /** * get方法的文件下载 * <p> * 特别说明 android中的progressBar是google唯一的做了处理的可以在子线程中更新UI的控件 * * @param pat ...

  2. Android使用HttpURLConnection通过POST方式发送java序列化对象

    使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...

  3. 53. Android常用工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...

  4. android开发工具类总结(一)

    一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...

  5. 【转】Android常用工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefe ...

  6. (转载)android 一些工具类汇总

    android 一些工具类汇总 作者:曾田生z 字体:[增加 减小] 类型:转载 时间:2016-08-14我要评论 本文给大家汇总介绍了一些常用的Android工具类,非常的简单实用,有需要的小伙伴 ...

  7. 安卓开发之HttpURLConnection类和Handler类的使用

    package com.lidaochen.test; import java.io.ByteArrayOutputStream; import java.io.InputStream; public ...

  8. HttpURLConnection类

    导语 java.net.HttpURLConnectin类是URLConnection类的抽象子类.它在处理协议为HTTP的URL时特别有效.具体而言,它通过它可以获取和设置请求方法,确定是否重定向, ...

  9. Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

    Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...

随机推荐

  1. HDU 4598 Difference

    Difference Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  2. [luoguP1130] 红牌(DP)

    传送门 幼儿园DP. ——代码 #include <cstdio> #include <iostream> ; << ); int a[MAXN][MAXN], f ...

  3. CODEVS1222 信与信封问题 (匈牙利算法)

    先做一遍匈牙利算法.对于已经匹配的边,如果删去之后还能最大匹配数增加,则不符合要求. 一遍匈牙利算法是O(n^3)的,对于每一条边做n次,每次O(n^2),总的复杂度是O(n^3). 注意:不要忘记输 ...

  4. 20180710使用gh

    转自:http://www.ywnds.com/?p=14265 一.背景 GitHub正式宣布以开源的方式发布gh-ost:GitHub的MySQL无触发器在线更改表定义工具!下面是官方给出gh-o ...

  5. 在docker上安装运行mysql实例

    ps:实验环境是:CentOS Linux release 7.3  64位1.获取mysql镜像从docker hub的仓库中拉取mysql镜像docker pull mysql查看镜像docker ...

  6. Ubuntu 16.04监控网络带宽软件

    1.系统监控器已经自带了默认的监控功能,包括CPU.内存.带宽.进程等,但带宽的一些详情不能显示出来. 2.使用top命令进行监控进程 sudo top 3.安装Indicator-sysmonito ...

  7. 1.7-BGP③

    IBGP的水平分隔原则(Split Horizon Rule): IBGP的水平分割原则:by default,routes learned via IBGP are never propagated ...

  8. 数据库学习之简单的SQL语句

    1.数据库的结构 1.1数据库 不同数据库叫做Catalog(在有的 DBMS 中也称为 Database,即数据库) .採用多 Catalog 以后能够给我们带 来例如以下优点: 便于对各个 Cat ...

  9. Android对方向感应器的封装调用

    Android自动的SensorManager使用起来已经很方便,但由于一些情况我们希望对其中的功能进行封装: 只使用个别的sensor,功能相对单一 要对sensor返回的raw data进行算法处 ...

  10. 桌面系统集成WEB认证系统方案

    最近做的一个项目,有WEB版.WPF版.手机版.领导想集成集团的一个现成的认证系统,姑且称这个认证系统名为 W4认证系统. W4认证系统有如下特点: 1.现成的 2.是个单点登录系统 3.不支持oAu ...