缃戠粶璇锋眰妗嗘灦-HttpClient鐨刧et,post鍜屽浘鐗囦笂浼犳湇鍔″櫒

缃戠粶璇锋眰妗嗘灦----HttpClient鐨刧et,post鍜屽浘鐗囦笂浼犳湇鍔″櫒

HttpClient鏄疉pache Jakarta Common涓嬬殑瀛愰」鐩紝鐢ㄦ潵鎻愪緵楂樻晥鐨勩€佹渶鏂扮殑銆佸姛鑳戒赴瀵岀殑鏀寔HTTP鍗忚鐨勫鎴风缂栫▼宸ュ叿鍖咃紝骞朵笖瀹冩敮鎸丠TTP鍗忚鏈€鏂扮殑鐗堟湰鍜屽缓璁€侶ttpClient宸茬粡搴旂敤鍦ㄥ緢澶氱殑椤圭洰涓紝姣斿Apache Jakarta涓婂緢钁楀悕鐨勫彟澶栦袱涓紑婧愰」鐩瓹actus鍜孒TMLUnit閮戒娇鐢ㄤ簡HttpClient銆?/span>

HttpClient:鏄竴涓帴鍙?

鐗规€э細

1. 鍩轰簬鏍囧噯銆佺函鍑€鐨刯ava璇█銆傚疄鐜颁簡Http1.0鍜孒ttp1.1

2. 浠ュ彲鎵╁睍鐨勯潰鍚戝璞$殑缁撴瀯瀹炵幇浜咹ttp鍏ㄩ儴鐨勬柟娉曪紙GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE锛夈€?/span>

3. 鏀寔HTTPS鍗忚銆?/span>

4. 閫氳繃Http浠g悊寤虹珛閫忔槑鐨勮繛鎺ャ€?/span>

5. 鍒╃敤CONNECT鏂规硶閫氳繃Http浠g悊寤虹珛闅ч亾鐨刪ttps杩炴帴銆?/span>

6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos璁よ瘉鏂规銆?/span>

7. 鎻掍欢寮忕殑鑷畾涔夎璇佹柟妗堛€?/span>

8. 渚挎惡鍙潬鐨勫鎺ュ瓧宸ュ巶浣垮畠鏇村鏄撶殑浣跨敤绗笁鏂硅В鍐虫柟妗堛€?/span>

9. 杩炴帴绠$悊鍣ㄦ敮鎸佸绾跨▼搴旂敤銆傛敮鎸佽缃渶澶ц繛鎺ユ暟锛屽悓鏃舵敮鎸佽缃瘡涓富鏈虹殑鏈€澶ц繛鎺ユ暟锛屽彂鐜板苟鍏抽棴杩囨湡鐨勮繛鎺ャ€?/span>

10. 鑷姩澶勭悊Set-Cookie涓殑Cookie銆?/span>

11. 鎻掍欢寮忕殑鑷畾涔塁ookie绛栫暐銆?/span>

12. Request鐨勮緭鍑烘祦鍙互閬垮厤娴佷腑鍐呭鐩存帴缂撳啿鍒皊ocket鏈嶅姟鍣ㄣ€?/span>

13. Response鐨勮緭鍏ユ祦鍙互鏈夋晥鐨勪粠socket鏈嶅姟鍣ㄧ洿鎺ヨ鍙栫浉搴斿唴瀹广€?/span>

14. 鍦╤ttp1.0鍜宧ttp1.1涓埄鐢↘eepAlive淇濇寔鎸佷箙杩炴帴銆?/span>

15. 鐩存帴鑾峰彇鏈嶅姟鍣ㄥ彂閫佺殑response code鍜?headers銆?/span>

16. 璁剧疆杩炴帴瓒呮椂鐨勮兘鍔涖€?/span>

17. 瀹為獙鎬х殑鏀寔http1.1 response caching銆?/span>

18. 婧愪唬鐮佸熀浜嶢pache License 鍙厤璐硅幏鍙栥€?/span>

妗堜緥鏁堟灉鍥撅細

缃戠粶璇锋眰妗嗘灦-HttpClient鐨刧et,post鍜屽浘鐗囦笂浼犳湇鍔″櫒

MainActivity.java

public class MainActivity extends Activity implements OnClickListener {

	public static String urls = "http://gpj.zhangwoo.cn/app.php?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1";

	private TextView mTextView;
	private ImageView imagegvoew;
	String resultStr = "";
	String resultStr1 = "";
	private Bitmap mBitmap = null;

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

	private void initView() {
		findViewById(R.id.btn1).setOnClickListener(this);
		findViewById(R.id.btn2).setOnClickListener(this);
		findViewById(R.id.btn3).setOnClickListener(this);
		findViewById(R.id.btn4).setOnClickListener(this);
		mTextView = (TextView) findViewById(R.id.Text);
		imagegvoew = (ImageView) findViewById(R.id.imagegvoew);

	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btn1:

			Thread visitBaiduThread = new Thread(new VisitWebRunnable());
			visitBaiduThread.start();
			try {
				visitBaiduThread.join();
				if (!resultStr.equals("")) {
					mTextView.setText(resultStr);
				}
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			break;
		case R.id.btn2:
			Thread visitBaiduThreads = new Thread(new VisitWebRunnables());
			visitBaiduThreads.start();
			try {
				visitBaiduThreads.join();
				if (!resultStr1.equals("")) {
					mTextView.setText(resultStr1);
				}
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			break;
		case R.id.btn3:

			new DownImgAsyncTask()
					.execute("http://avatar.****.net/8/6/0/2_dickyqie.jpg");

			break;
		case R.id.btn4:
			//Util.addFile("url");//鍥剧墖璺緞
			break;
		default:
			break;
		}

	}

	/** 杩欓噷閲嶅啓handleMessage鏂规硶锛屾帴鍙楀埌瀛愮嚎绋嬫暟鎹悗鏇存柊UI **/
	private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case 1:
				// 鍏抽棴
				imagegvoew.setImageBitmap(mBitmap);
				break;
			}
		}
	};

	class DownImgAsyncTask extends AsyncTask<String, Void, Bitmap> {

		@Override
		protected void onPreExecute() {
			// TODO Auto-generated method stub
			super.onPreExecute();

		}

		@Override
		protected Bitmap doInBackground(String... params) {
			// TODO Auto-generated method stub
			Bitmap b = Util.getImageBitmap(params[0]);
			return b;
		}

		@Override
		protected void onPostExecute(Bitmap result) {
			// TODO Auto-generated method stub
			super.onPostExecute(result);
			if (result != null) {
				imagegvoew.setImageBitmap(result);
			}
		}

	}

	/***
	 * get
	 * 
	 * @author zq
	 * 
	 */
	class VisitWebRunnable implements Runnable {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			HttpClient httpCLient = new DefaultHttpClient();
			// 鍒涘缓get璇锋眰瀹炰緥
			HttpGet httpget = new HttpGet("http://www.baidu.com");
			try {
				HttpResponse response = httpCLient.execute(httpget);
				if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

					String result = EntityUtils.toString(response.getEntity(),
							"UTF-8");
					resultStr = result;
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

	/***
	 * Post
	 * 
	 * @author zq
	 * 
	 */
	class VisitWebRunnables implements Runnable {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			List<NameValuePair> formparams = new ArrayList<NameValuePair>();
			formparams.add(new BasicNameValuePair("c", "member"));
			formparams.add(new BasicNameValuePair("a", "getdepartments"));
			HttpClient client = null;
			HttpPost request = null;
			try {
				client = new DefaultHttpClient();
				request = new HttpPost(urls);
				request.setEntity(new UrlEncodedFormEntity(formparams,
						HTTP.UTF_8));
				HttpResponse response = client.execute(request);
				if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
					String result = EntityUtils.toString(response.getEntity(),
							"UTF-8");
					System.out.println(result);
					resultStr1 = result;
				}
			} catch (IOException e) {
				e.printStackTrace();

			}

		}

	}

}

public class Util {
	/**
	 * 鍥剧墖鍔犺浇
	 * 
	 * @param url
	 * @return
	 */
	public static Bitmap getImageBitmap(String url) {
		DefaultHttpClient httpclient = new DefaultHttpClient();
		HttpGet httpget = new HttpGet(url);
		try {
			HttpResponse resp = httpclient.execute(httpget);
			// 鍒ゆ柇鏄惁姝g‘鎵ц
			if (HttpStatus.SC_OK == resp.getStatusLine().getStatusCode()) {
				// 灏嗚繑鍥炲唴瀹硅浆鎹负bitmap
				HttpEntity entity = resp.getEntity();
				InputStream in = entity.getContent();
				Bitmap mBitmap = BitmapFactory.decodeStream(in);
				// 鍚慼andler鍙戦€佹秷鎭紝鎵ц鏄剧ず鍥剧墖鎿嶄綔
				return mBitmap;
			}

		} catch (Exception e) {
		} finally {
			httpclient.getConnectionManager().shutdown();
		}

		return null;
	}

	/***
	 * 涓婁紶鏂囦欢
	 */
	public static void addFile(String url) {
		CloseableHttpClient httpclient = HttpClients.createDefault();
		try {
			HttpPost httppost = new HttpPost(url);

			FileBody bin = new FileBody(new File(url));
			StringBody comment = new StringBody("A binary file of some kind",
					ContentType.TEXT_PLAIN);

			HttpEntity reqEntity = MultipartEntityBuilder.create()
					.addPart("bin", bin).addPart("comment", comment).build();

			httppost.setEntity(reqEntity);

			System.out
					.println("executing request " + httppost.getRequestLine());
			CloseableHttpResponse response = httpclient.execute(httppost);
			try {
				System.out.println(response.getStatusLine());
				HttpEntity resEntity = response.getEntity();
				if (resEntity != null) {
					System.out.println("Response content length: "
							+ resEntity.getContentLength());
				}
			} finally {
				response.close();
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				httpclient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}


璁板緱鍔犵綉缁滄潈闄?/span>

<uses-permission android:name="android.permission.INTERNET"/>

瀹屾垚浠ヤ笂鍔熻兘闇€瑕?httpclient.jar,聽 httpcore.jar聽聽 htttpmime.jar 鐐瑰嚮涓嬭浇鍗冲彲

婧愮爜涓嬭浇锛?http://download.****.net/detail/dickyqie/9707202