بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

اتصال به وب سرویس با یوزر نیم و پسورد ؟

مدیریت گفتگو
aliasheq 12 سال پیش
آخرین تغییر: 12 سال پیش

سلام اگر به وب سرویسی که میخوام وصل بشم  یوزر نیم و پسورد داشته باشه چی کار باید بکنم ؟ چطور باید یوزر نیم و پسورد را به وب سرویس پاس بدم ؟البته از طریقه یوآرال نمیخوام پاس بدم .

اینم کده اندرویدمه :

 public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		EditText edtUsername = (EditText) findViewById(R.id.edtUserName);
		EditText edtPassword = (EditText) findViewById(R.id.edtPassword);
		String username = edtUsername.getText().toString();
		String passwprd = edtPassword.getText().toString();
		
		HttpClient client = new DefaultHttpClient();
		HttpPost methodPost = new HttpPost("http://www.online.test.ir/MobileWebService/Related.asmx/Login");
		try {
			client.execute(methodPost);
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

این کده وب سرویسشه :

         [WebMethod(EnableSession = true)]
        public int Login(string username, string pass, string device, int? security)
        {
            var ret = -3;
            try
            {
                var bs = new BaseMaster();
                if (!bs.securityRequest(10))
                {
                    return -10;//ارسال بیش از حد دیتا
                }
                bs.setLogMobileVisit();
                if (string.IsNullOrEmpty(pass) || security == null || string.IsNullOrEmpty(username))
                {
                    ret = -2;//پارامترهای اساسی ارسال نشده است
                }
                else if (security != 128110)
                {
                    ret = -1;//کد امنیتی درست وارد نشده است
                }
                else
                {
                    var user = GetUserByName(username);
                    var p = Hash.MD5(pass);
                    if (user != null && user.Hidden == false && user.Password == Hash.MD5(pass))
                    {
                        if (user.Firstname != device)
                        {
                            return -4;//این گوشی برای این نام کاربری فعال نشده است
                        }
                        var u = new UserDB();
                        u.LastLogDate = DateTime.Now;
                        u.UpdateDate = DateTime.Now;
                        u.UserID = user.UserID;
                        Makarem_Facade.MakaremFL.UpdateMobileUserDB(u);
                        ret = (int)user.UserID;//عددی بزرگتر از 0 نشان دهنده لاگین با موفقیت است
                        var pl = new PermissionDBList();
                        Security.Login(user,false,pl);
                        StartSession(user);
                    }
                    else if (user.Hidden == true)
                    {
                        ret = 0;//این کاربری توسط مدیر غیر فعال شده است
                    }
                    else if (user == null)
                    {
                        ret = -3;// این نام کاربری یافت نشده است
                    }
                    else
                    {
                        ret = -5;//کلمه عبور با نام کاربری همخوانی ندارد
                    }
                }
            }
            catch
            {
                ret = -6;//خطایی در طول برنامه رخ داده است              
            }
            return ret;
        }

نظرات

MiRHaDi 12 سال پیش
شما یوزر و پسورد را post کن ! البته پسورد را Hash کن بعد بفرست

پاسخ‌ها 2

aliasheq 12 سال پیش

آقای میرهادی . اینطوری درسته ؟

 
final HttpParams params = new BasicHttpParams(); params.setParameter("username", "google"); params.setParameter("passwprd", "123456789"); params.setParameter("device", "0"); params.setParameter("security", 128110);

@Override public void run() { HttpClient client = new DefaultHttpClient(); HttpPost methodPost = new HttpPost("http://www.online.makarem.ir/MobileWebService/Related.asmx/Login"); methodPost.setParams(params); try { HttpResponse response = client.execute(methodPost); int code = response.getStatusLine().getStatusCode(); Log.i("OK", Integer.toString(code)); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

نظرات

sadeghbarout 12 سال پیش

والا من از وب سرویسی که استاد نوشتن استفاده میکنم. اینجوری پاس میده :

 public class Webservice {



public static String send_eteraf(ArrayList<NameValuePair> params) {
String res = Webservice.readUrl("http://www.uncocoder.com/page.php", params);
return res;
}


public static String readUrl(String url, ArrayList<NameValuePair> params) {
try {
HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost(url);

if (params != null) {
method.setEntity(new UrlEncodedFormEntity(params));
}

HttpResponse response = client.execute(method);

InputStream inputStream = response.getEntity().getContent();
String result = convertInputStreamToString(inputStream);

return result;
}
catch (ClientProtocolException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}

return null;
}


private static String convertInputStreamToString(InputStream inputStream) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();

String line = "";

while ((line = reader.readLine()) != null) {
builder.append(line);
}

return builder.toString();
}
catch (IOException e) {
e.printStackTrace();
}

return null;
}
}

که مقادیر به صورت NameValuePair ها فرستاده میشن.

اینم طرز استفاده اش:

 ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));

String response = Webservice.readUrl(params);

نظرات

MiRHaDi 12 سال پیش
من فگر میکنم هر دفعه یوزر و پس نفرستیم بهتره. یکبار اول بفرستین به صورت Hash شده با salt بعد یک رشته sha1 جواب بگیرید ، اون رشته را یا یک چیز دیگه مخلوط کنید و hash کنید. این میشه کلید ارتباط سرور و کلاینت ، این رو بفرستید و بگیرید. بعد از یک مدت هم اکسپایرش کنید
sadeghbarout 12 سال پیش
آره اینم راه امنیتی خوبیه. راستی اندروید sha1 و md5 رو داره؟
MiRHaDi 12 سال پیش
آموزش وب سرویس قسمت کش sha1 هست. md5 هم مشابه اونه ، فکر کنم سورسش را در سایت گذاشته بودم
sadeghbarout 12 سال پیش
آها.ممنون. اون آموزش رو هنوز ندیدم. امشب اگه شد میبینمش
aliasheq 12 سال پیش
Sadeghbarout جان منم از همون post استفاده کردم ولی با کمی تفاوت . MiRHaDi جان فرموده شما کاملا درسته که من پسورد رو توی webService .Net هش میکنم . چون برای چت آنلاین هست .با تشکر از شما عزیزان

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .