رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در برقراری ارتباط با سرور
#1
سلام . ببخشید دوستان یه برنامه دارم برای لاگین شدن از طریق سرور که یوزر و پسورد رو از کاربر میگیره و با سرور ارتباط میگیره اگه یوزر و پسورد توی sql  سمت سرور  موجود باشه یه پیغام ok برای کاربر ارسال میشه . حالا فایل php سمت سرور مشکلی نداره و درست کار میکنه ولی سمت اندرویدم مشکل داره و با سمت سرور ارتباط نمیگیره . کد برنامه رو میزارم اگه دوستان لطف کنن یه راهنمایی بکنن که مشکلشو پیدا کنم ممنون میشم.

کد برنامه :


package com.login.login;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.Timer;
import java.util.TimerTask;


public class MainActivity extends Activity {

    public  static  String r="";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText user= (EditText) findViewById(R.id.editText);
        final EditText password= (EditText) findViewById(R.id.editText2);
        Button btn= (Button) findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                login(user.getText().toString(),password.getText().toString());

            }
        });

    }
    private  void  login(String user,String password){
        new clas_login("http://loginuser.ss0.ir/log.php",user,password).execute();

       final ProgressDialog c=new ProgressDialog(MainActivity.this);
        c.setMessage("login...");
        c.show();
        final Timer t=new Timer();
        t.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if(r.equals("ok")){
                            c.cancel();
                            t.cancel();
                            Toast.makeText(MainActivity.this,r,Toast.LENGTH_SHORT).show();
                            r="";
                        }else if (r.equals("")){
                            c.cancel();
                            t.cancel();
                            Toast.makeText(MainActivity.this,r,Toast.LENGTH_SHORT).show();
                            r="no user";

                        }else if (r.equals("error password")){
                            c.cancel();
                            t.cancel();
                            Toast.makeText(MainActivity.this,r,Toast.LENGTH_SHORT).show();
                            r="";

                        }

                    }
                });

            }
        },1,1000);



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}



 
کد کلاس :


package com.login.login;

import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;


public class clas_login extends AsyncTask {

    private  String Link;
    private  String User;
    private  String Password;

    public clas_login(String link, String user, String password) {
        Link=link;
        User=user;
        Password=password;
    }

    @Override
    protected Object doInBackground(Object... arg0) {
        try {

            String data=URLEncoder.encode("user","UTF-8")+"="+URLEncoder.encode(User,"UTF-8");
            data+= "&" + URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(Password,"UTF-8");

            URL con = new URL(Link);
            URLConnection connect=con.openConnection();

            connect.setDoOutput(true);
            OutputStreamWriter wr= new OutputStreamWriter(connect.getOutputStream());
            wr.write(data);
            wr.close();

            BufferedReader read=new BufferedReader(new InputStreamReader(connect.getInputStream()));
            StringBuilder sb=new StringBuilder();
            String line=null;
            while ((line=read.readLine())!=null){

                sb.append(line);
            }

            MainActivity.r=sb.toString();
        }catch (Exception e){

        }


        return null;
    }
}
پاسخ
تشکر شده توسط:
#2
الان r کجا داره مقداردهی میشه؟
پاسخ
تشکر شده توسط:
#3
(11-11-1395، 09:15 ق.ظ)ADMIN نوشته: الان r کجا داره مقداردهی میشه؟

پاسخی هستش که از طرف فایل php به اپلیککیشن ارسال میشه .
اگه یوزر و پسوردی که کاربر وارد کرده و به سرور ارسال شده درست باشه پاسخ ok دریافت میشه و اگه پسورد اشتبا باشه پایخ error password دریافت میشه و اگه یوزر نیم وارد شده موجود نباشه پاسخی دریافت نمیشه
پاسخ
تشکر شده توسط:
#4
(11-11-1395، 09:15 ق.ظ)ADMIN نوشته: الان r کجا داره مقداردهی میشه؟

خیلی واسه این برنامه گیرم ممنون میشم راهنماییم کنید
پاسخ
تشکر شده توسط:
#5
خوب موضوع اینه که توی کد شما هیچ جا r مقداردهی نشده! توی Async هیچی return نکردین موقع دریافت مقدار از سرور و در انتها هم null رو برگردوندین. توی کلاستون هم هیچ جا مقداری داخل r قرار نگرفته.
پاسخ
تشکر شده توسط:
#6
ببخشید من الان پروژه ای رو درم که واسه لاگین شدن آنلاین هستش و با آدرس هاستی که توش نوشته شده هیچ مشکلی نداره و درست عمل میکنه  و منم توی هاست خودم دقیقا همون فایل php رو نوشتم و فایل php درست عمل میککنه ولی وقتی آدرس فایل php رو توی اپلیکیشن تغییر میدم دیگه عمل نمیکنه نمیدونم مشکل از کجاست . امکانش هست سورس برنامه رو براتون بفرستم زحمتشو بکشید ببینید مشکلش چیه ؟ چون تازه کار هستم و خیلی هم به این برنامه احتیاج دارم. ممنون
پاسخ
تشکر شده توسط:
#7
r دقیقا کجاست
با منتو سفر ارزان سفر کنید و تور ارزان بروید


پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان