三套API实现发送GET、POST请求给服务器

1.     使用URL类实现发请求给服务器:

1.1.  Get方式的请求:

//注意: 此处 get 方式的请求, 如果带过去的请求参数 有 中文字符, 那么需要进行
//url 编码 , 否则是带不过去的 .
//number=%E7%90%83%E7%90%83
number= URLEncoder.encode(number, "UTF-8");
path = path+"?number="+number+"&password="+password;
URL url = new URL(path);

get方式时:服务端要解决乱码, 需要手动的进行 解码

String encodeValue = URLEncoder.encode(number, "ISO8859-1");

number = URLDecoder.decode(encodeValue, "UTF-8");

1.2.  Post方式的请求:

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(5000);

//使用 post 方式
conn.setRequestMethod("POST");

//number=%E5%B0%8F%E9%8A%AE&password=sdfds
//post请求时, 中文数据也需要进行 URL 编码

//这里需要 将 number的中文值, 进行 url 编码
number = URLEncoder.encode(number, "UTF-8");
System.out.println(number);
String params = "number="+number+"&password="+password;

//设置必要的请求的头的信息
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", params.length()+"");

//将参数 params 以流的形式 写给 服务器

//加一个 标志, 表示 要向 服务器 写数据了
conn.setDoOutput(true);
conn.getOutputStream().write(params.getBytes());

int code = conn.getResponseCode();

Post方式 ,只需要一行代码搞定

//post是 解决乱码 // 这个代码只对post 有效, 因为覆盖的 请求体中的数据的 解码 使用到的编码集

request.setCharacterEncoding("utf-8");

2.     Apache的面向对象的api实现发送请求:

2.1:   get方式:

这套 api , 谷歌工程师已经集成 到 android 中去了. 所以可以直接拿过来用

// http://188.188.4.100:8080/day06_android/login?number=110&password=123

number =URLEncoder.encode(number, "UTF-8");
path = path+"?number="+number+"&password="+password;

//相当于打开了一个 浏览器客户端
HttpClient client = new DefaultHttpClient();

//get方式的请求
HttpGet get = new HttpGet(path);

//获得的响应 对象
HttpResponse response = client.execute(get);

//获得状态行对象,然后再 获得状态行中的状态码
int code = response.getStatusLine().getStatusCode();

if(code==200){

//获得响应体, 获得响应体中的 流的数据
//接下来的代码跟之前一样的
InputStream in = response.getEntity().getContent();

String value = StreamTool.decodeStream(in);

2.2: post方式

HttpClient client = new DefaultHttpClient();

// http://188.188.4.100:8080/day06_android/login
HttpPost post = new HttpPost(path);

//两个键值对
NameValuePair pair1=new BasicNameValuePair("number", number);
NameValuePair pair2=new BasicNameValuePair("password", password);

//把两个键值对 放到 list 中去, 然后再 把 list 放入到 实体中
List<NameValuePair> list = new ArrayList<NameValuePair>();

list.add(pair1);
list.add(pair2);

//这里传 了 UTF-8 就可以将数据 编码后带过去 了
post.setEntity(new UrlEncodedFormEntity(list,"UTF-8"));

HttpResponse response = client.execute(post);

//获得状态行对象,然后再 获得状态行中的状态码
int code = response.getStatusLine().getStatusCode();

3     使用开源框架使用发送请求:

去github上下载搜索async http ,下载把com文件放到工程目录下就可以用了,它使用的是AsyncHttpClient这个api

3.1:   get方式:

path = path+"?number="+number+"&password="+password;
AsyncHttpClient client = new AsyncHttpClient();

client.get(path, new AsyncHttpResponseHandler(){

//访问 网络时, 服务器成功的处理了客户端的请求时 会被调用
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {

Toast.makeText(MainActivity.this, "登录的结果是 : " + new String(responseBody), 0).show();
}

//访问 网络时, 请求失败会调用
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {

Toast.makeText(MainActivity.this, "对不起, 服务器无响应 ... ", 0).show();
}
});

3.2: post方式

AsyncHttpClient client = new AsyncHttpClient();

RequestParams params = new RequestParams();
params.add("number", number);
params.add("password", password);

client.post(path, params,new AsyncHttpResponseHandler(){

//访问 网络时, 服务器成功的处理了客户端的请求时 会被调用
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {

Toast.makeText(MainActivity.this, "post 登录的结果是 : " + new String(responseBody), 0).show();
}

//访问 网络时, 请求失败会调用
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {

Toast.makeText(MainActivity.this, "对不起, 服务器无响应 ... ", 0).show();
}
});

时间: 2024-10-27 07:12:54

三套API实现发送GET、POST请求给服务器的相关文章

如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环境中,很多是不支持的.比如有的浏览器只能发送

Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4006009.html 联系方式:[email protected] [系列]Android系列之网络:(持续更新) Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) Android系列之网络(二)----HTTP请求头与响应头 Android

Api开发者福利之api在线管理,模拟请求测试,文档生成工具--Apizza

Apizza (http://apizza.cc?f=51cto) 平台分为开发模式和浏览模板,开发模式只有用户自己可以打开,浏览模式是供其他人查看,测试使用. 平台支持标准的http协议请求,支持添加header,支持标准 json,xml,html,text四种返回格式, 自动格式化展示.平台做了许多体验优化,比如参数列表和url自动转换, 请求文档字段一键生成.响应文档的字段可以从api返回自动生成.请求自动存为历史记录, 支持定义的环境变量,可以方便切换线下,下上环境,文档导出等等. 下

php 中使用cURL发送get/post请求,上传图片,批处理

cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1 初始化        2 设置选项,包括url        3  执行并获取结果   4 释放curl句柄. 在工作和学习中,我也是时常用的curl.由于在使用curl设置选项时,各种选项比较难以记忆,需要参考,故在此记录下常用的一些例子,以便后来参考. 实例一 : 抓取网页数据(以拉手网开放api为例,也是g

详解ASP.NET Core API 的Get和Post请求使用方式

原文:详解ASP.NET Core API 的Get和Post请求使用方式 上一篇文章帮助大家解决问题不彻底导致博友使用的时候还是遇到一些问题,欢迎一起讨论.所以下面重点详细讲解我们常用的Get和Post请求( 以.net core2.2的Http[Verb]为方向 ,推荐该属性路由),如果想验证,直接利用VS2017创建ASP.NET Core API (.net core 2.2),在DefaultController里面操作.文中有些关键字,我是加了粗的,请注意一下. 帮助回忆,Get和P

axios发送两次请求原因及解决方法

axios发送两次请求原因及解决方法 最近Vue项目中使用axios组件,在页面交互中发现axios会发送两次请求,一种请求方式为OPTIONS,另外一种为自己设置的. 如图: 什么是CORS通信? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制. CORS需要浏览器和服务器同时支持.目前,所有浏览器都支持该功能,IE浏

调用webapi 错误:使用 HTTP 谓词 POST 向虚拟目录发送了一个请求,而默认文档是不支持 GET 或 HEAD 以外的 HTTP 谓词的静态文件。的解决方案

第一次调用webapi出错如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>IIS 7.5 详细错误 - 4

PHP服务器文件管理器开发小结(三):使用jQuery提交AJAX请求

本节将讨论使用jQuery提交AJAX请求的基本方法,并完成显示首文件夹的基本方法. 同时,本节也将讨论使用图片链接提交请求的基本方法. jQuery是一套强大的JS库,将复杂的JS操作封装成简洁的语句,并提供对AJAX的支持.通过 jQuery AJAX 方法,您能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本.HTML.XML 或 JSON - 同时您能够把这些外部数据直接载入网页的被选元素中.编写常规的 AJAX 代码并不容易,因为不同的浏览器对 AJAX 的实现

Apache Kafka系列(三) Java API使用

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 摘要: Apache Kafka Java Client API 一.基本概念 Kafka集成了Producer/Consumer连接Broker的客户端工具,但是在消息处理方面,这两者主要用于服务端(Broker)的简单操作,如: 1.创建Topic 2.罗列出已存在的Topic 3.对已有Topic的Produce/Consume测试