0 امتیاز
قبل در برنامه نویسی توسط (0 امتیاز)
ویرایش شده قبل توسط
سلام از دوستان کسی نحوه اتصال اندروید به یک وب سرویس رو بلده ؟ کدنویسیش چطوریه ؟

1 پاسخ

+3 امتیاز
قبل توسط (1.1هزار امتیاز)

برای این کار راه های زیادی وجود دارد که در زیر من 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 برنامه اندروید شما مشغول نماند.

قبل توسط (1.1هزار امتیاز)
+1
بله حتما باید این کار را کرد من فقط درباره کتابخانه هایی که این کار رو انجام می دهند صحبت کردم.

سوالات مشابه

0 امتیاز
1 پاسخ 1.9هزار بازدید
0 امتیاز
2 پاسخ 2.4هزار بازدید
+1 امتیاز
1 پاسخ 395 بازدید
0 امتیاز
1 پاسخ 427 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
+2 امتیاز
1 پاسخ 13.4هزار بازدید
...