具体实现代码:
//先将参数放入List,再对参数进行URL编码
List<BasicNameValuePair>params = new LinkedList<BasicNameValuePair>()
params.add(new BasicNameValuePair("param1", "数据"))//增加参数1
params.add(new BasicNameValuePair("param2", "value2"))//增加参数2
String param = URLEncodedUtils.format(params, "UTF-8")//对参数编码
String baseUrl = "服务器接口完整URL"
HttpGet getMethod = new HttpGet(baseUrl + "?" + param)//将URL与参数拼接
HttpClient httpClient = new DefaultHttpClient()
try {
HttpResponse response = httpClient.execute(getMethod)//发起GET请求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode())//获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"))//获取服务器响应内容
} catch (ClientProtocolException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
2. POST方式 方式传递参数
//和GET方式一样,先将参数放入List
params = new LinkedList<BasicNameValuePair>()
params.add(new BasicNameValuePair("param1", "Post方法"))//增加参数1
params.add(new BasicNameValuePair("param2", "第二个参数"))//增加参数2
try {
HttpPost postMethod = new HttpPost(baseUrl)//创建一个post请求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8"))//将参数填入POST Entity中
HttpResponse response = httpClient.execute(postMethod)//执行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode())//获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"))//获取响应内容
} catch (UnsupportedEncodingException e) {
e.printStackTrace()
} catch (ClientProtocolException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
HTTP协议使用TCP协议传输的,因此在传输数据之前采用三次握手建立TCP连接。第4个包就是HTTP请求,然后是HTTP应答。你的问题是服务器的应答包没有收到,那太简单了。首先是超时定时器到期提示网络无响应。然后可以重新连接即可。仅供参考~android的消息推送办法:1、可以使用轮询(Pull)方式
就是用客户端定时向服务器发送相关的信息,一旦服务器有变化就会马上同步消息。但这种方式对服务器的压力是十分大的,而且比较费客户端的流量,就是不断地向服务器发送请求,但是这样开发很简单。
2、使用持久连接(Push)方式
就是客户端和服务器之间建立起一连接,这样就可以实现消息的及时发送,而且这种方式开发难度大,开发周期较长。但是这是一种最常使用的方式,目前主流的消息推送都是通过这种方式做的。
选择消息推送软件,深圳极光就不错。极光截至2020年12月,已有超169万款APP在使用极光提供的服务。而且专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)