برای این کار راه های زیادی وجود دارد که در زیر من 3 روش برای اتصال به وب سرویس REST در اندروید را برای شما آورده ام:
حتما باید permission زیر را به فایل Manifest برنامه اندروید خود اضافه کنید:
<uses-permission android:name="android.permission.INTERNET" />
روش اول، استفاده از HttpClient:
public void callRest() throws IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(
"rest-url");
request.addHeader("Accept", "text/plain");
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
InputStream instream = entity.getContent();
String jaxrsmessage = read(instream);
}
private String read(InputStream instream) {
StringBuilder sb = null;
try {
sb = new StringBuilder();
BufferedReader r = new BufferedReader(new InputStreamReader(
instream));
for (String line = r.readLine(); line != null; line = r.readLine()) {
sb.append(line);
}
instream.close();
} catch (IOException e) {
}
return sb.toString();
}
روش دوم، استفاده از کتابخانه Spring for Android:
final String url = "rest-url";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Greeting greeting = restTemplate.getForObject(url, Greeting.class);
روش سوم، استفاده از HttpURLConnection:
public static void callRest() throws JSONException {
HttpURLConnection urlConnection = null;
try {
// create connection
URL urlToRequest = new URL("rest-url");
urlConnection = (HttpURLConnection)
urlToRequest.openConnection();
urlConnection.setConnectTimeout(CONNECTION_TIMEOUT);
urlConnection.setReadTimeout(DATARETRIEVAL_TIMEOUT);
// handle issues
int statusCode = urlConnection.getResponseCode();
if (statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
// handle unauthorized (if service requires user login)
} else if (statusCode != HttpURLConnection.HTTP_OK) {
// handle any other errors, like 404, 500,..
}
// create JSON object from content
InputStream in = new BufferedInputStream(
urlConnection.getInputStream());
JSONObject jsonObject = new JSONObject(getResponseText(in));
} catch (MalformedURLException e) {
// URL is invalid
} catch (SocketTimeoutException e) {
// data retrieval or connection timed out
} catch (IOException e) {
// could not read response body
// (could not create input stream)
} catch (JSONException e) {
// response body is no valid JSON string
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
}
private static String getResponseText(InputStream inStream) {
return new Scanner(inStream).useDelimiter("\\A").next();
}
پ.ن. بهتر از برای تمام روش ها از AsyncTask استفاده کنید تا در صورت تاخیر در دریافت اطلاعات از وب سرویس، thread اصلی UI برنامه اندروید شما مشغول نماند.