您的位置:首页 > 理论基础 > 计算机网络

volley两种网络请求方式

2016-03-18 13:15 302 查看
今天简单总结Volley两种网络请求方式(GET与POST)

有Web开发经验的对这两种方法肯定很熟悉,一般来说,要传递数据时推荐用POST,不推荐用GET(GET会暴露出传递的参数),好了废话不说了,直接上代码。

1.GET方式请求

首先设置服务器地址,我这是Tomcat本地服务器.

String url = "http://192.168.247.1:9060/Uploadfile/stringGetServlet";


后面可以带上参数或者不带,这个要看服务器的接口是什么样的了。

主要说一下带上参数的,一般可以用来新闻等

网络请求成功后返回的结果类型是String,也可以是json,主要看需求

然后看具体实现:

private void RequestStringByGet() {
showProgress();
String url = "http://192.168.247.1:9060/Uploadfile/stringGetServlet";
String url2 = url + "?page=%s&count=%s";
String page = "10";
String count = "20";
String strUrl = String.format(url2, page, count);

StringRequest stringRequest = new StringRequest(Request.Method.GET, strUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this, "请求成功,返回结果是:" + response, Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error", "failure" + error.getMessage(), error);
Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_LONG).show();
}
});
hiddenProgress();
requestQueue.add(stringRequest);
}

其中,showProgress()和hiddenProgress()用来控制显示,隐藏进度框

private void showProgress() {
mProgress = ProgressDialog.show(this, "", "Loading...");
}

private void hiddenProgress() {
if (mProgress != null && mProgress.isShowing()) {
mProgress.cancel();
}
}


2.POST方式请求

和GET方式基本一样,不同的是传递参数的方式,直接看代码

private void RequestStringByPost() {
showProgress();
String url = "http://192.168.247.1:9060/Uploadfile/stringGetServlet";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this, "请求成功,返回结果是:" + response, Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error", "failure" + error.getMessage(), error);
Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map map = new HashMap();
map.put("page", "10");
map.put("count", "20");
return map;
}
};
hiddenProgress();
requestQueue.add(stringRequest);

}

如果需要设置头文件等

则重写getHeaders()等方法即可

@Override
public Map<String, String> getHeaders() throws AuthFailureError {

return super.getHeaders();
}


服务器端用的是javaEE,代码很简单,也贴一下

package com.d.upload.Servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class StringGetServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String page = request.getParameter("page");

String count = request.getParameter("count");

ServletOutputStream outputStream = response.getOutputStream();

if (page.equals("10") && count.equals("20")) {

outputStream.write("success".getBytes());

} else {

outputStream.write("failure".getBytes());

}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String page = request.getParameter("page");

String count = request.getParameter("count");

ServletOutputStream outputStream = response.getOutputStream();

if (page.equals("10") && count.equals("20")) {

outputStream.write("success".getBytes());

} else {

outputStream.write("failure".getBytes());

}

}

}

下一篇会写一下Volley上传图片,个人水平有限,如有错误或者更好的意见,请多多指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: