آموزش HttpClient در جاوا
سلام دوستان امیدوارم سلامت باشید در این سری از آموزش برنامه نویسی اندروید به آموزش HttpClient در جاوا می پردازیم از HttpClient به منظور ارسال درخواست (Request) به منظور دریافت (Get) و ارسال داده (Post) استفاده می شود در ادامه با ما همراه باشید تا نحوه استفاده از HttpClient را یاد گیرید با ما همراه باشید.
در آموزش قبلی با استفاده از HttpURLConnection عمل Post/Get را انجام میدادیم که می توانید از لینک زیر آن را بررسی کنید.
آموزش HttpURLConnection در جاوا
ابتدا متود Get را در HttpClient بررسی می کنیم.
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 | package ir.programchi; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; public class HttpClientExample { private final String USER_AGENT = "Mozilla/5.0"; public static void main(String[] args) throws Exception { HttpClientExample http = new HttpClientExample(); System.out.println("Testing 1 - Send Http GET request"); http.sendGet(); } private void sendGet() throws Exception { String url = "http://www.google.com/search?q=programchi"; HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); // add request header request.addHeader("User-Agent", USER_AGENT); HttpResponse response = client.execute(request); System.out.println("\nSending 'GET' request to URL : " + url); System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); BufferedReader rd = new BufferedReader( new InputStreamReader(response.getEntity().getContent())); StringBuffer result = new StringBuffer(); String line = ""; while ((line = rd.readLine()) != null) { result.append(line); } System.out.println(result.toString()); } } |
نحوه کار HttpClient به این شکل است که ابتدا باید یک insatnce از HttpClient ایجاد کنیم و بعد از آن با استفاده از متود HttpGet میایم connection بین کاربر و سرور را ایجاد می کنیم سپس برای اینکه نتیجه یا Response را دریافت کنیم connection ساخته شده را به HttpResponse میدهیم تا نتیجه در آن ذخیره شود. همانطور که در قبلا هم توضیح داده بودیم از هر Request یک نتیجه یا کد بر می گرداند کد برگشت داده شده تعیین می کند که عملیات به درستی انجام شده است یا خیر اگر درست بود 200 در غیر اینصورت می تواند عددهای مختلفی باشد که هرکدام معنی و مفهوم خاصی دارند.
متود Get را در HttpClient
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 44 45 46 47 48 | package ir.programchi; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; public class HttpClientExample { private final String USER_AGENT = "Mozilla/5.0"; public static void main(String[] args) throws Exception { HttpClientExample http = new HttpClientExample(); System.out.println("\nTesting 2 - Send Http POST request"); http.sendPost(); } private void sendPost() throws Exception { String url = "https://selfsolve.apple.com/wcResults.do"; HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); // add header post.setHeader("User-Agent", USER_AGENT); List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); urlParameters.add(new BasicNameValuePair("sn", "C02G8416DRJM")); urlParameters.add(new BasicNameValuePair("cn", "")); urlParameters.add(new BasicNameValuePair("locale", "")); urlParameters.add(new BasicNameValuePair("caller", "")); urlParameters.add(new BasicNameValuePair("num", "12345")); post.setEntity(new UrlEncodedFormEntity(urlParameters)); HttpResponse response = client.execute(post); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Post parameters : " + post.getEntity()); System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); BufferedReader rd = new BufferedReader( new InputStreamReader(response.getEntity().getContent())); StringBuffer result = new StringBuffer(); String line = ""; while ((line = rd.readLine()) != null) { result.append(line); } System.out.println(result.toString()); } } |
نحوه کار به این شکل است که ما با استفاده از NameValuePair برای ارسال پارامتر استفاده می شود در بالا ما لیستی از پارامتر ها ساختیم تا به url ارسال کنیم برای اینکه لیستی از پارامتر ها را ارسال کنیم از setEntity استفاده کردیم. و براینکه داده را به url اضافه کنیم از BufferedReader استفاده می کنیم کار BufferedReader به این شکل است که ابتدا Entity را دریافت و به BufferedReader می فرستیم سپس در آخر با استفاده از StringBuffer نتیجه را دریافت می کنیم.
موفق باشید.