天天看點

android Volley JSON請求1.概述2. GET請求3. POST請求

1.概述

關于Volley架構本人不做過多介紹!本文将提供一組JSON請求模闆代碼,希望對大家有所幫助!

進入主題前,啰嗦兩句,大家應該注意以下兩點:

1. 關于請求隊列RequestQueue,建議整個應用共享一個請求隊列。每次請求建立一個隊列開銷比較大,不算合理。

2. 建議實作parseNetworkResponse方法,設定編碼格式,防止亂碼。

2. GET請求

// 1.建立請求隊列
		RequestQueue volleyRequestQueue = Volley.newRequestQueue(this);

		// 2.json get請求處理
		JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
				Request.Method.GET, "your server url", null,
				new Response.Listener<JSONObject>() {

					@Override
					public void onResponse(JSONObject arg0) {
						try {
							String strState = arg0.getString("state");
							if (strState != null
									&& strState.equalsIgnoreCase("success")) {
								System.out.println("request success!");
							} else {
								System.out.println("request failed!");
							}
						} catch (Exception e) {
							System.out.println("request failed!");
						}
					}
				}, new Response.ErrorListener() {
					@Override
					public void onErrorResponse(VolleyError arg0) {
						System.out.println("request failed!");
					}
				}) {

			@Override
			protected Response<JSONObject> parseNetworkResponse(
					NetworkResponse arg0) {
				try {
					JSONObject jsonObject = new JSONObject(new String(
							arg0.data, "UTF-8"));
					return Response.success(jsonObject,
							HttpHeaderParser.parseCacheHeaders(arg0));
				} catch (UnsupportedEncodingException e) {
					return Response.error(new ParseError(e));
				} catch (Exception je) {
					return Response.error(new ParseError(je));
				}
			}

		};

		// 3.請求對象放入請求隊列
		volleyRequestQueue.add(jsonObjectRequest);
           

3. POST請求

try {
			// 1.建立請求隊列
			RequestQueue volleyRequestQueue = Volley.newRequestQueue(this);

			// 2.POST請求參數
			JSONObject params = new JSONObject();
			params.put("name", "zhangsan");
			params.put("password", "123456");

			// 3.json post請求處理
			JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
					Request.Method.POST, "your server url", params,
					new Response.Listener<JSONObject>() {

						@Override
						public void onResponse(JSONObject arg0) {
							try {
								String strState = arg0.getString("state");
								if (strState != null
										&& strState.equalsIgnoreCase("success")) {
									System.out.println("request success!");
								} else {
									System.out.println("request failed!");
								}
							} catch (Exception e) {
								System.out.println("request failed!");
							}
						}
					}, new Response.ErrorListener() {
						@Override
						public void onErrorResponse(VolleyError arg0) {
							System.out.println("request failed!");
						}
					}) {

				@Override
				protected Response<JSONObject> parseNetworkResponse(
						NetworkResponse arg0) {
					try {
						JSONObject jsonObject = new JSONObject(new String(
								arg0.data, "UTF-8"));
						return Response.success(jsonObject,
								HttpHeaderParser.parseCacheHeaders(arg0));
					} catch (UnsupportedEncodingException e) {
						return Response.error(new ParseError(e));
					} catch (Exception je) {
						return Response.error(new ParseError(je));
					}
				}

			};

			// 4.請求對象放入請求隊列
			volleyRequestQueue.add(jsonObjectRequest);
		} catch (Exception e) {
		}