1.客户端以普通的post方式进行提交,服务端返回字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest =
new
StringRequest(Request.Method.POST,httpurl,
new
Response.Listener<string>() {
@Override
public
void
onResponse(String response) {
Log.d(TAG,
"response -> "
+ response);
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
}) {
@Override
protected
Map<string, string=
""
> getParams() {
//在这里设置需要post的参数
Map<string, string=
""
> map =
new
HashMap<string, string=
""
>();
map.put(
"name1"
,
"value1"
);
map.put(
"name2"
,
"value2"
);
return
params;
}
};
requestQueue.add(stringRequest);</string,></string,></string,></string>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Map<string, string=
""
> map =
new
HashMap<string, string=
""
>();
map.put(
"name1"
,
"value1"
);
map.put(
"name2"
,
"value2"
);
JSONObject jsonObject =
new
JSONObject(params);
JsonRequest<jsonobject> jsonRequest =
new
JsonObjectRequest(Method.POST,httpurl, jsonObject,
new
Response.Listener<jsonobject>() {
@Override
public
void
onResponse(JSONObject response) {
Log.d(TAG,
"response -> "
+ response.toString());
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
})
{
//注意此处override的getParams()方法,在此处设置post需要提交的参数根本不起作用
//必须象上面那样,构成JSONObject当做实参传入JsonObjectRequest对象里
//所以这个方法在此处是不需要的
// @Override
// protected Map<string, string=""> getParams() {
// Map<string, string=""> map = new HashMap<string, string="">();
// map.put("name1", "value1");
// map.put("name2", "value2");
// return params;
// }
@Override
public
Map<string, string=
""
> getHeaders() {
HashMap<string, string=
""
> headers =
new
HashMap<string, string=
""
>();
headers.put(
"Accept"
,
"application/json"
);
headers.put(
"Content-Type"
,
"application/json; charset=UTF-8"
);
return
headers;
}
};
requestQueue.add(jsonRequest);</string,></string,></string,></string,></string,></string,></jsonobject></jsonobject></string,></string,>
|
如果服务端并不支持这种方式呢?比如常见的spring m vc 服务端,就很难支持json的请求方式.
那么我们想实现这个目标,就需要使用下面给出的办法.
3.客户端以普通的post方式进行提交,服务端返回json串
首先在Activity类里,继承Request实现一个NormalPostRequest类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
private
class
NormalPostRequest
extends
Request<jsonobject> {
private
Map<string, string=
""
> mMap;
private
Listener<jsonobject> mListener;
public
NormalPostRequest(String url, Listener<jsonobject> listener,ErrorListener errorListener, Map<string, string=
""
> map) {
super
(Request.Method.POST, url, errorListener);
mListener = listener;
mMap = map;
}
//mMap是已经按照前面的方式,设置了参数的实例
@Override
protected
Map<string, string=
""
> getParams()
throws
AuthFailureError {
return
mMap;
}
//此处因为response返回值需要json数据,和JsonObjectRequest类一样即可
@Override
protected
Response<jsonobject> parseNetworkResponse(NetworkResponse response) {
try
{
String jsonString =
new
String(response.data,HttpHeaderParser.parseCharset(response.headers));
return
Response.success(
new
JSONObject(jsonString),HttpHeaderParser.parseCacheHeaders(response));
}
catch
(UnsupportedEncodingException e) {
return
Response.error(
new
ParseError(e));
}
catch
(JSONException je) {
return
Response.error(
new
ParseError(je));
}
}
@Override
protected
void
deliverResponse(JSONObject response) {
mListener.onResponse(response);
}
}</jsonobject></string,></string,></jsonobject></jsonobject></string,></jsonobject>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Request<jsonobject> request =
new
NormalPostRequest(httpurl,
new
Response.Listener<jsonobject>() {
@Override
public
void
onResponse(JSONObject response) {
Log.d(TAG,
"response -> "
+ response.toString());
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
}, params);
requestQueue.add(request);</jsonobject></jsonobject>
|
1.客户端以普通的post方式进行提交,服务端返回字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest =
new
StringRequest(Request.Method.POST,httpurl,
new
Response.Listener<string>() {
@Override
public
void
onResponse(String response) {
Log.d(TAG,
"response -> "
+ response);
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
}) {
@Override
protected
Map<string, string=
""
> getParams() {
//在这里设置需要post的参数
Map<string, string=
""
> map =
new
HashMap<string, string=
""
>();
map.put(
"name1"
,
"value1"
);
map.put(
"name2"
,
"value2"
);
return
params;
}
};
requestQueue.add(stringRequest);</string,></string,></string,></string>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Map<string, string=
""
> map =
new
HashMap<string, string=
""
>();
map.put(
"name1"
,
"value1"
);
map.put(
"name2"
,
"value2"
);
JSONObject jsonObject =
new
JSONObject(params);
JsonRequest<jsonobject> jsonRequest =
new
JsonObjectRequest(Method.POST,httpurl, jsonObject,
new
Response.Listener<jsonobject>() {
@Override
public
void
onResponse(JSONObject response) {
Log.d(TAG,
"response -> "
+ response.toString());
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
})
{
//注意此处override的getParams()方法,在此处设置post需要提交的参数根本不起作用
//必须象上面那样,构成JSONObject当做实参传入JsonObjectRequest对象里
//所以这个方法在此处是不需要的
// @Override
// protected Map<string, string=""> getParams() {
// Map<string, string=""> map = new HashMap<string, string="">();
// map.put("name1", "value1");
// map.put("name2", "value2");
// return params;
// }
@Override
public
Map<string, string=
""
> getHeaders() {
HashMap<string, string=
""
> headers =
new
HashMap<string, string=
""
>();
headers.put(
"Accept"
,
"application/json"
);
headers.put(
"Content-Type"
,
"application/json; charset=UTF-8"
);
return
headers;
}
};
requestQueue.add(jsonRequest);</string,></string,></string,></string,></string,></string,></jsonobject></jsonobject></string,></string,>
|
如果服务端并不支持这种方式呢?比如常见的spring m vc 服务端,就很难支持json的请求方式.
那么我们想实现这个目标,就需要使用下面给出的办法.
3.客户端以普通的post方式进行提交,服务端返回json串
首先在Activity类里,继承Request实现一个NormalPostRequest类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
private
class
NormalPostRequest
extends
Request<jsonobject> {
private
Map<string, string=
""
> mMap;
private
Listener<jsonobject> mListener;
public
NormalPostRequest(String url, Listener<jsonobject> listener,ErrorListener errorListener, Map<string, string=
""
> map) {
super
(Request.Method.POST, url, errorListener);
mListener = listener;
mMap = map;
}
//mMap是已经按照前面的方式,设置了参数的实例
@Override
protected
Map<string, string=
""
> getParams()
throws
AuthFailureError {
return
mMap;
}
//此处因为response返回值需要json数据,和JsonObjectRequest类一样即可
@Override
protected
Response<jsonobject> parseNetworkResponse(NetworkResponse response) {
try
{
String jsonString =
new
String(response.data,HttpHeaderParser.parseCharset(response.headers));
return
Response.success(
new
JSONObject(jsonString),HttpHeaderParser.parseCacheHeaders(response));
}
catch
(UnsupportedEncodingException e) {
return
Response.error(
new
ParseError(e));
}
catch
(JSONException je) {
return
Response.error(
new
ParseError(je));
}
}
@Override
protected
void
deliverResponse(JSONObject response) {
mListener.onResponse(response);
}
}</jsonobject></string,></string,></jsonobject></jsonobject></string,></jsonobject>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Request<jsonobject> request =
new
NormalPostRequest(httpurl,
new
Response.Listener<jsonobject>() {
@Override
public
void
onResponse(JSONObject response) {
Log.d(TAG,
"response -> "
+ response.toString());
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
}, params);
requestQueue.add(request);</jsonobject></jsonobject>
|