0 امتیاز
قبل در برنامه نویسی توسط (1.9هزار امتیاز)
ویرایش شده قبل توسط

چطور میشه که به URL های قفل شده دسترسی داشت مثلا با HTaccess - htpasswd ادرس قفل شده . چطور می تونم فیلد پسورد و یوزر رو وارد کنم که اتصال معتبر و انجام بشه ؟

قبل توسط (1.1هزار امتیاز)
میشه بیشتر توضیح بدین. منظورتون از URL قفل شده چیه؟
قبل توسط (1.9هزار امتیاز)
ویرایش شده قبل توسط
برای امنیت داده ها و کلا امنیت app ادرس رو lock کردم htpasswd سمت سرور حالا نیاز دارم که اینپوت باکس های پنجره ای  authorization رو با پسورد و یوزرنییم پر کنم .
یک نمونه اضاف می کنم به سوال
 از RESTful استفاده می کنم.

1 پاسخ

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



کد اتصال که HttpURLConnectionاستفاده کردم نه apache httpclient چون پیشتبانی میشه بگزریم  و اینکه برای وارد کردن اطلاعات در فیلدها هم اول همه پنجره ای زرین رو در کد پیاده کردم و فلیدها رو پر کردم و بعد ارسال کردم به سمت سرور

 

ساختن پنجره در کد :

        byte[] loginByte = (UserName + ":" + PassWord).getBytes();
        StringBuilder loginBuilder = new StringBuilder().
                append("Basic ")
                .append(Base64.encodeToString(loginByte,Base64.DEFAULT));

اعمال کد :

con.addRequestProperty("Authorization", loginBuilder.toString());

 

و در اخر در activity نام کاربری و رمز عبور رو به تابع پاس می دم :

protected String doInBackground(String... params) {
            String content = HttpManager.getData(params[0], "namekarbari", "pass");
            return content;
        }

 

کد کلی تابع :


    public static String getData(String uri, String UserName, String PassWord)
    {

        BufferedReader reader = null;

        byte[] loginByte = (UserName + ":" + PassWord).getBytes();
        StringBuilder loginBuilder = new StringBuilder().
                append("Basic ")
                .append(Base64.encodeToString(loginByte,Base64.DEFAULT));

        try {
            URL url =   new URL(uri);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();

            con.addRequestProperty("Authorization", loginBuilder.toString());

            StringBuilder sb = new StringBuilder();
            reader = new BufferedReader(new InputStreamReader(con.getInputStream()));

            String line = null;
            while ((line = reader.readLine()) != null){

                sb.append(line+" \n");

            }
            return sb.toString();
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }finally {
            if (reader != null) {
                try {
                    reader.close();
                }catch (Exception e){
                    e.printStackTrace();
                    return null;
                }
            }
        }

}

از کلاس AsyncTask استفاده کردم و فراخوانی تابع درون شه که من کامل قرار میدم که اشتباه پیش نیاد :

 

    class MyTask extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
            if (tasks.size() == 0) {
                pb.setVisibility(View.VISIBLE);
            }
            tasks.add(this);
        }

        @Override
        protected String doInBackground(String... params) {
            String content = HttpManager.getData(params[0], "namekarbari", "pass");
            return content;
        }

        @Override
        protected void onPostExecute(String result) {
            tasks.remove(this);
            if (tasks.size() == 0) {
                pb.setVisibility(View.INVISIBLE);
            }

            if (result == null) {
                Toast.makeText(payamak.this,
                        "لطفا به اینترنت متصل شوید.", 
                        Toast.LENGTH_LONG).show();
                return;
            }
            ItemList = ItemJsonParser.parseFeed(result);
            new UpdateDisplay();
        }
      }

 

سوالات مشابه

0 امتیاز
1 پاسخ 2.3هزار بازدید
0 امتیاز
0 پاسخ 783 بازدید
0 امتیاز
2 پاسخ 539 بازدید
...