PDA

View Full Version : مشکل با ارسال اطلاعات (فوری فوری)کممممکک



asemaneiran
یک شنبه 07 شهریور 1395, 09:11 صبح
سلام
میخوام با این کد از برنامه داخل سرور داده درج کنم اما خطای
Invalid IP Address
میده
این کدها


public class MainActivity extends ActionBarActivity {
String name;
String id;
InputStream is=null;
String result=null;
String line=null;
int code;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final EditText e_id=(EditText) findViewById(R.id.editText1);
final EditText e_name=(EditText) findViewById(R.id.editText2);
Button insert=(Button) findViewById(R.id.button1);

insert.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

id = e_id.getText().toString();
name = e_name.getText().toString();

insert();
}
});
}

public void insert()
{
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

nameValuePairs.add(new BasicNameValuePair("id",id));
nameValuePairs.add(new BasicNameValuePair("name",name));

try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/app.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.e("pass 1", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 1", e.toString());
Toast.makeText(getApplicationContext(), "Invalid IP Address",
Toast.LENGTH_LONG).show();
}

try
{
BufferedReader reader = new BufferedReader
(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result = sb.toString();
Log.e("pass 2", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 2", e.toString());
}

try
{
JSONObject json_data = new JSONObject(result);
code=(json_data.getInt("code"));

if(code==1)
{
Toast.makeText(getBaseContext(), "Inserted Successfully",
Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getBaseContext(), "Sorry, Try Again",
Toast.LENGTH_LONG).show();
}
}
catch(Exception e)
{
Log.e("Fail 3", e.toString());
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}


اینم لوک کت
08-27 19:19:13.260: E/Fail 1(1764): org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2 refused
08-27 19:19:13.340: E/Fail 2(1764): java.lang.NullPointerException
08-27 19:19:13.370: E/Fail 3(1764): java.lang.NullPointerException


خواهش می کنم یکی بگه چکار کنم
دیوانم کرده:متفکر::اشتباه::گریه:

msroid
یک شنبه 07 شهریور 1395, 10:38 صبح
سلام

من نمیدونم شما از چه نسخه ای از اندروید استفاده میکنید اما در حال حاضر تمام کلاس های مربوط به آپاچی نه تنها منسوخ بلکه کاملا از اندروید حذف شدن و شما باید از کلاس خود اندروید یعنی HttpUrlConnection یا از کتابخونه هایی مثل retrofit استفاده کنید.

asemaneiran
یک شنبه 07 شهریور 1395, 11:11 صبح
من از اکیلیپس و نسخه ای پی ای ۱۹ اندروید استفاده می کنم
والا توی همه سایت های انگلیسی که سرچ کردم ارتباط برنامه با سرور همه این طوری بودن همه رو امتحان کردم هر کدوم یه خطایی داد اینم که از اخریش خواهش می کنم بگید چکار کنم
ممنون:عصبانی++:

msroid
یک شنبه 07 شهریور 1395, 11:37 صبح
من خیلی کم از اکلیپس استفاده کردم و چون مشکلات زیادی داشت خیلی سریع بیخیالش شدم و بیش از پیش وقتم رو هدر ندادم و اومدم سمت اندروید استودیو به شما هم همین توصیه رو میکنم چون بالاخره باید بیاد به این سمت.

اگر بخواین از همین متدها استفاده کنید من نمیتونم کمکی کنم چون همونجور که گفتم باهاشون کار نکردم چون کاملا از اندروید حذف شدند اما اگر بخواین از کلاس های خود اندروید استفاده کنید می تونید آموزش زیر رو ببینید تا متوجه بشید چجوری از طریق HttpUrlConnection همراه با متد پست داده ارسال و دریافت کنید.

http://www.xyzws.com/javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139

Nevercom
یک شنبه 07 شهریور 1395, 12:05 عصر
خطا داره اشاره میکنه که نمیتونه به IP با آدرس 10.0.2.2 دسترسی پیدا کنه، روس سیستم خودتون Ping بگیرید ببینید میتونید به این IP Address دسترسی داشته باشید.
بجای این آدرس از آدرسی مثل Google.com استفاده کنید تا مطمين بشید که کدهاتون درست کار می کنه.

احتمالاً این آدرس باید به localhost اشاره کنه، پس اطمینان حاصل کنید که وب سرور درحال اجرا هست.

asemaneiran
دوشنبه 08 شهریور 1395, 07:44 صبح
ممنون از دوستان
چشم سعی می کنم اندروید استادیو نصب کنم
اما
از لینک تون چیزی دستگیرم نشد نميشه یه نمونه کوچکی از این چیزی که میگید با کلاس اندروید هست لطف کنید بزارید؟
---
نه سرور فعاله و با ای پی 127.0.0.1 توی مرورگر باز میشه اما نميدونم چرا تو برنامه این خطا رو میده

خواهش میکنم اساتید راهنمایی کنند
ممنون

Nevercom
دوشنبه 08 شهریور 1395, 11:11 صبح
به احتمال زیاد خطا بخاطر این هست که اون IP برای سیستم شما معتبر نیست.

اگه برنامه رو داخل Emulator خود اندروید اجرا می کنید، 127.0.0.1 به خود امولیتور اشاره میکنه، واسه همین از آدرس 10.0.2.2 استفاده می کنید که به localhost سیستم اصلی اشاره می کنه.

مسلماً اگه برنامه رو روی گوشی تست می کنید، این آدرس در دسترس نخواهد بود. و باید IP Address کامپیوتر خودتون در شبکه رو بدید.

اگه روی GenyMotion تست می کنید، چون روی VirtualBox اجرا میشه، شاید لازم باشه تنظیمات دیگری هم اعمال کنید (که من اطلاع ندارم)

bl4ckhat
دوشنبه 08 شهریور 1395, 12:21 عصر
سلام
شما به وسیله ipconfig توی کامند آی پیتون رو در بیارید و به جای url بدید.

http://xxx.xxx.xxx.xxx/app.php

در ضمن برای تمامی شبیه ساز ها نمیتونید از 10.0.2.2 استفاده کنید
واس جنی موشن 10.0.3.2 هستش.
و از 10.0.2.15 هم اگر اشتباه نکنم واس بلواستکس باشه.

asemaneiran
سه شنبه 09 شهریور 1395, 07:35 صبح
ممنون دوست خوبم از توجه تون
من با 10.0.2.2 توی you wave چک کردم بالا اومد اما توی nox نه!
دیگه نمیدونم چکار کنم همش همون خطا رو میده
شما یا دوستان دیگه نمونه ای که جواب بده ندارید بهم بدید:گریه:
خواهش می کنم:اشتباه:
ممنون میشم :قلب: