使用volley實現簡單的操作,json傳輸,網絡圖片顯示

服務器端代碼

@WebServlet(urlPatterns = "/get")
public class getServlet extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		System.out.println("get");
		// JSONObject jsonObject = new JSONObject();
		// try {
		// jsonObject.put("json", "json");
		// } catch (JSONException e) {
		// e.printStackTrace();
		// }

		Map<String, Object> result = new HashMap<String, Object>();
		result.put("json1", "Json");
		result.put("json2", "Json");
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().println(new JSONObject(result));
	}
}
使用servlet部署在tomcat上面,採用json傳輸數據

在android上與服務器通信

public class MainActivity extends Activity {
	private ImageView imageView;
	private NetworkImageView mNetworkImageView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		final TextView mTextView = (TextView) findViewById(R.id.txt);
		imageView = (ImageView) findViewById(R.id.imageView1);
		// mNetworkImageView = (NetworkImageView)
		// findViewById(R.id.networkImageView);
		RequestQueue queue = Volley.newRequestQueue(this);

		String url = "http://219.228.251.22:8080/test/get";
		String imageUrl = "http://imgsrc.baidu.com/forum/pic/item/95d7912397dda144e5e2d08ab1b7d0a20cf4861b.jpg";

		queue.add(new StringRequest(Method.GET, url, new Listener<String>() {

			@Override
			public void onResponse(String arg0) {
				mTextView.setText(arg0);
				//	mTextView.setText(new JSONObject(arg0).getString("json2"));
				//可以使用String類型的返回值獲取json數據
			}
		}, null));

		JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Method.GET,
				url, null, new Listener<JSONObject>() {

					@Override
					public void onResponse(JSONObject arg0) {
						try {
							mTextView.append(arg0.getString("json1"));
						} catch (JSONException e) {
							e.printStackTrace();
						}
					}
				}, new Response.ErrorListener() {
					@Override
					public void onErrorResponse(VolleyError error) {
					}
				});
		queue.add(jsonObjectRequest);

		ImageRequest request = new ImageRequest(imageUrl,
				new Response.Listener<Bitmap>() {
					@Override
					public void onResponse(Bitmap bitmap) {
						imageView.setImageBitmap(bitmap);

					}
				}, 0, 0, null, new Response.ErrorListener() {
					public void onErrorResponse(VolleyError error) {
						imageView.setImageResource(R.drawable.ic_launcher);
					}
				});
		queue.add(request);
	}


volley.jar下載

post 傳數據

  loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                account = idEdit.getText().toString();
                password = pwdEdit.getText().toString();
                queue = Volley.newRequestQueue(LoginActivity.this);
                String url = "http://219.228.251.13:8080/WirelessOrder_Server/servlet/LoginServlet";
                StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

                    @Override
                    public void onResponse(String arg0) {
                        Log.d("login", arg0);
                        if (!arg0.equals("0"))
                            finish();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        // error
                        Log.d("Error.Response", error.getMessage());
                    }
                }) {
                    protected Map<String, String> getParams() {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("account", account);
                        params.put("password", password);
                        return params;
                    }
                };
                queue.add(request);
            }
        });
由於繼承public abstract class Request<T> implements Comparable<Request<T>> {

這個類,所以需重寫下面的方法

    /**
     * Returns a Map of parameters to be used for a POST or PUT request.  Can throw
     * {@link AuthFailureError} as authentication may be required to provide these values.
     *
     * <p>Note that you can directly override {@link #getBody()} for custom data.</p>
     *
     * @throws AuthFailureError in the event of auth failure
     */
    protected Map<String, String> getParams() throws AuthFailureError {
        return null;
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章