ورود

View Full Version : حرفه ای: خواهش میکنم یکی کمک کنه (ارتباط با لوکال هاست)



asemaneiran
یک شنبه 23 خرداد 1395, 07:46 صبح
سلام دوستان خواهش میکنم یکی بگه من چطور باید آدرس سایت رو لوکال رو به برنامه بدم تا بتونم توی اندروید از سایتم داده بگیرم
من از wamp server php json استفاده کردم خطایی ندارم اما ادرس رو هرچی میدم برنامه force close میشه
خواهش میکنم یکی نجاتم بده
ممنون
راستی من از آموزش این لینک استفاده کردم
http://www.codeproject.com/Articles/800703/Connecting-your-Android-app-to-your-WAMP-server
اما نميدونم چه مجوزی دیگر ای باید به برنامه بدم و یا چه تنظیماتی انجام بدم ..:'(
هر ip میدم نمیشه

vahid-p
یک شنبه 23 خرداد 1395, 08:22 صبح
شما اگر از Emulator استفاده میکنید خب مسلمه آی پی 127.0.0.1 به خود دستگاه اندرویدی Emulator ارجاع میده.
در صورتی که Wamp روی سیستم شما در حال اجراست و به عنوان یک دستگاه در شبکه محلی است.

دسترسی به اینترنت فکر میکنم برای این مورد کافی باشه.
پست دوم این لینک رو http://stackoverflow.com/questions/8693665/how-to-connect-android-emulator-with-local-mysql-database بخونید.


---------------------
ضمنا موضوع تاپیک با قوانین انجمن سازگار نیست. "خواهش میکنم ..." . بهتره بنویسید مثلا: "ارتباط اندروید از طریق شبیه ساز با دیتابیس در کامپیوتر"

asemaneiran
یک شنبه 23 خرداد 1395, 09:39 صبح
سلام ممنون که جواب میدید خوبه لااقل شما هستید خدا خیرتون بده
من لیکن رو دیدم لوکال هاست جای ip گذاشتم اما بازم نشد..

vahid-p
یک شنبه 23 خرداد 1395, 22:02 عصر
سلام ممنون که جواب میدید خوبه لااقل شما هستید خدا خیرتون بده
من لیکن رو دیدم لوکال هاست جای ip گذاشتم اما بازم نشد..
شما اون مطلب رو نخوندید که!
خیلی واضح نوشته:

If you're running this within the emulator localhost:3306 won't work. Replace that with the IP address of the machine running MySQL. So for example if your local dev machine (running MySQL) uses IP 192.168.0.10, change that to 192.168.0.10:3306
که توضیح دادم که سیستم (ویندوز یا لینوکس و...) شما برای Emulator دستگاه اندرویدی لوکال نیست که بخواید با آی پی 127.0.0.1 دسترسی داشته باشید (توجه کنید عبارت localhost هم معادل همین 127.0.0.1 هست و تفاوتی نداره)

مثلا الان من به اینترنت مودم وای فای متصلم و آی پی در شبکه محلی که معمولا به فرم 192.168xxxxxx است، برای من: 192.168.1.105 شما میتونید چنین آی پی رو در برنامتون وارد کنید و دستگاه اندرویدی به سیستم شما از طریق شبکه محلی متصل میشه نه لوکال هاست. البته ممکنه دسترسی به پورت 3306 که برای دیتابیس mysql هست مسدود باشه (از طریق firewall) که تو اینترنت سرچ بزنید چطور دسترسی به این پورت رو از طریق فایروال آزاد بذارید.

تو عکس زیر میتونی نحوه پیدا کردن آی پی در شبکه محلی رو ببینی:
http://s6.picofile.com/file/8255529800/ip_address.jpg

shahin bahari
یک شنبه 23 خرداد 1395, 22:16 عصر
خود شبیه ساز از شبکه برای ارتباط استفاده می کنه واسه همین 127.0.0.1 به یه جای دیگه برمیگرده به جای لوکال هاست. باید بنویسید : 10.0.2.2
اگه برات سواله که چرا این IP لینک زیر رو ببین:
http://stackoverflow.com/questions/9808560/why-do-we-use-10-0-2-2-to-connect-to-local-web-server-instead-of-using-computer

asemaneiran
دوشنبه 24 خرداد 1395, 07:25 صبح
سلام
سپاس از لطفتون
من ipconfig توی cmd زدم و ip v4 رو توی برنامه و مرورگر زدم اما سایت لوکال بالا نیامد. ...
این پورت رو هم آزاد کردم باز نشد...
بهرحال ممنون

asemaneiran
دوشنبه 24 خرداد 1395, 07:54 صبح
من با آموزش این آدرس
http://serverfault.com/questions/260239/unable-to-connect-to-mysql-through-port-3306
پورت رو باز کردم
اما نشد

vahid-p
دوشنبه 24 خرداد 1395, 22:32 عصر
اگر براتون امکان داره سورس کد برنامه + دیتابیس نمونه رو قرار بدید تا چک کنیم شاید مشکل از چیز دیگه ای باشه

asemaneiran
سه شنبه 25 خرداد 1395, 09:23 صبح
کدهای با کدهای سایت codeproject مو نمیزنه چندبار چک کردم مشکل ip هست شما راه دیگر ای به نظرتون نمیرسه؟؟؟
چون با نوشتن local host , سایت رو لوکال اجرا میشه اما با ای پی دیگر غیر 127 و لوکال هاست اجرا نميشه

asemaneiran
سه شنبه 25 خرداد 1395, 18:43 عصر
اموزشی از سایت کلیدستان پیدا کردم
این کل اون کدهایی هست که طبق اموزششون نوشتم اما جواب نمیده و برنامه force close می شه
روی هاست رایگان هم امتحان کردم باز برنامه در اجرا بسته شد
میشه لطف کنید کدها رو ببینید
public class MainActivity extends ListActivity {

private ProgressDialog pd;
JSONParser jparser=new JSONParser();
ArrayList<HashMap<String, String>> p;
JSONArray s=null;

private final String url="http://localhost/test/test.php?name=hamid&city=tehran";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
p=new ArrayList<HashMap<String, String>>();
new news().execute();

}

class news extends AsyncTask<String, String, String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
pd=new ProgressDialog(MainActivity.this);
pd.setMessage("Login");
pd.show();



}

@Override
protected String doInBackground(String... args) {

List<NameValuePair> parms=new ArrayList<>();
JSONObject json=jparser.makeHttpRequest(url, "GET", parms);


try {

int t=json.getInt("t");
if(t==1)
{
s=json.getJSONArray("news");
for(int i=0;i<s.length();i++)
{
JSONObject c=s.getJSONObject(i);
String title=c.getString("title");
String detailes=c.getString("detailes");
String date=c.getString("date");
String time=c.getString("time");

String author=c.getString("author");

HashMap<String, String> map=new HashMap<String, String>();
map.put(title, "title");
map.put(detailes, "detailes");
map.put(date, "date");
map.put(time, "time");

map.put(author, "author");

p.add(map);





}

}else
{
Toast.makeText(MainActivity.this, "not Found data", Toast.LENGTH_SHORT).show();

}

} catch (JSONException e) {
// TODO: handle exception
e.printStackTrace();
}
return null;

}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pd.cancel();
runOnUiThread( new Runnable() {
@Override
public void run() {
ListAdapter adapter=new SimpleAdapter(MainActivity.this,p,R.layout.list_it em,
new String[]{"title","detailes","date","time","author"},
new int[]{R.id.textViewtitle,R.id.textViewdetailes,R.id.tex tViewdate,R.id.textViewime,R.id.textViewauthor});
setListAdapter(adapter);

}
});



}
}
-----------------------------------------------------------
فایل php
<?php
if(isset($_GET['name']) && isset($_GET['city'])){
$name = $_GET['name'];
$name = htmlspecialchars($name);
$name = strip_tags($name);

$city = $_GET['city'];
$city = htmlspecialchars($city);
$city = strip_tags($city);

echo "name : ".$name." --- city : ".$city."";
}
?>

asemaneiran
چهارشنبه 26 خرداد 1395, 19:12 عصر
بابا کسی نیست جواب بده
لااقل یه نمونه کوچیک بزاره
لطفا
:گریه::عصبانی++:

vahid-p
پنج شنبه 27 خرداد 1395, 07:11 صبح
ip ها درسته. هم ip که دوستمون گفتن 10.0.2.2 و هم اون ip که گفتم چطور بدست میارید رو هر دو تست کردم و به راحتی جواب گرفتم.
برای اینکه مطمئن بشید ip ها درسته و مشکل از برنامتون هست، کافیه از طریق Emulator و از طریق منو Browser رو باز کنید و این ip ها رو وارد کنید، و ببینید جواب میگیرید.
وقتی مطمئن شدید ip درسته و وب سرور درست کار میکنه، پس میمونه برنامه ای که مینویسید که مرتبط با برنامه نویسی اندروید هست

http://s6.picofile.com/file/8255997768/test_ip.jpg

asemaneiran
پنج شنبه 27 خرداد 1395, 08:16 صبح
سلام
ممنون از جوابتون
من تو مرورگر با ip 127.0.0.1 وlocalhost جواب گرفتم
توی cm هم ipconfig زدم وipv4 رو بهم داد اما توی مرورگر جواب نداد و سایت بالا نیامد. اون پورت 3306 رو چک کردم توی کنترل پنل بهش دسترسی نداشتم انگار ؟ نميدونم چرا و چطور؟
چشم با این 10.0.0.2 هم چک میکنم
ممنونم

asemaneiran
پنج شنبه 27 خرداد 1395, 09:49 صبح
توی شبیه ساز آندروید با ip ی که شما گفتید اجرا شد اما با 127 و لوکال هاست نه
توی مرورگر فقط با 127 و لوکال هاست جواب میدهد و بس
حالا مشکل از کجاست به نظرتون ممنون میشم نجاتم بدید. .
دیوانم کرده

asemaneiran
پنج شنبه 27 خرداد 1395, 10:30 صبح
سلام
توی logcat برای کدهای کلیدستان این خطا میاد
E/Buffer Error(1747): Error converting result java.lang.NullPointerException
E/Buffer Error(1802): Error converting result java.lang.NullPointerException
و برای کدهای سایت codeproject این خطا ها
E/Buffer Error(1862): Error converting resultjava.lang.NullPointerException
E/json parser(1862): Error parsing dataorg.json.JSONException: End of input at character 0 of
E/AndroidRuntime(1862): FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime(1862): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(1862): at android.os.AsyncTask$3.done(AsyncTask.java:278)
E/AndroidRuntime(1862): at java.util.concurrent.FutureTask$Sync.innerSetExcep tion(FutureTask.java:273)
E/AndroidRuntime(1862): at java.util.concurrent.FutureTask.setException(Futur eTask.java:124)
E/AndroidRuntime(1862): at java.util.concurrent.FutureTask$Sync.innerRun(Futu reTask.java:307)
E/AndroidRuntime(1862): at java.util.concurrent.FutureTask.run(FutureTask.jav a:137)
E/AndroidRuntime(1862): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTas k.java:208)
E/AndroidRuntime(1862): at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1076)
E/AndroidRuntime(1862): at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:569)
E/AndroidRuntime(1862): at java.lang.Thread.run(Thread.java:856)
E/AndroidRuntime(1862): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1862): at com.example.senddata.MainActivity$news.doInBackgro und(MainActivity.java:66)
E/AndroidRuntime(1862): at com.example.senddata.MainActivity$news.doInBackgro und(MainActivity.java:1)
E/AndroidRuntime(1862): at android.os.AsyncTask$2.call(AsyncTask.java:264)
E/AndroidRuntime(1862): at java.util.concurrent.FutureTask$Sync.innerRun(Futu reTask.java:305)
E/AndroidRuntime(1862): ... 5 more
E/WindowManager(1862): Activity com.example.senddata.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View@a06998b0 that was originally added here
E/WindowManager(1862): android.view.WindowLeaked: Activity com.example.senddata.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View@a06998b0 that was originally added here
E/WindowManager(1862): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:344)
E/WindowManager(1862): at android.view.WindowManagerImpl.addView(WindowManag erImpl.java:267)
E/WindowManager(1862): at android.view.WindowManagerImpl.addView(WindowManag erImpl.java:215)
E/WindowManager(1862): at android.view.WindowManagerImpl$CompatModeWrapper.a ddView(WindowManagerImpl.java:140)
E/WindowManager(1862): at android.view.Window$LocalWindowManager.addView(Win dow.java:537)
E/WindowManager(1862): at android.app.Dialog.show(Dialog.java:278)
E/WindowManager(1862): at com.example.senddata.MainActivity$news.onPreExecut e(MainActivity.java:51)
E/WindowManager(1862): at android.os.AsyncTask.executeOnExecutor(AsyncTask.j ava:561)
E/WindowManager(1862): at android.os.AsyncTask.execute(AsyncTask.java:511)
E/WindowManager(1862): at com.example.senddata.MainActivity.onCreate(MainAct ivity.java:40)
E/WindowManager(1862): at android.app.Activity.performCreate(Activity.java:4 465)
E/WindowManager(1862): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1049)
E/WindowManager(1862): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1920)
E/WindowManager(1862): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1981)
E/WindowManager(1862): at android.app.ActivityThread.access$600(ActivityThre ad.java:123)
E/WindowManager(1862): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1147)
E/WindowManager(1862): at android.os.Handler.dispatchMessage(Handler.java:99 )
E/WindowManager(1862): at android.os.Looper.loop(Looper.java:137)
E/WindowManager(1862): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
E/WindowManager(1862): at java.lang.reflect.Method.invokeNative(Native Method)
E/WindowManager(1862): at java.lang.reflect.Method.invoke(Method.java:511)
E/WindowManager(1862): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
E/WindowManager(1862): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
E/WindowManager(1862): at dalvik.system.NativeStart.main(Native Method)
E/Buffer Error(1914): Error converting resultjava.lang.NullPointerException
E/json parser(1914): Error parsing dataorg.json.JSONException: End of input at character 0 of
E/AndroidRuntime(1914): FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime(1914): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(1914): at android.os.AsyncTask$3.done(AsyncTask.java:278)
E/AndroidRuntime(1914): at java.util.concurrent.FutureTask$Sync.innerSetExcep tion(FutureTask.java:273)
E/AndroidRuntime(1914): at java.util.concurrent.FutureTask.setException(Futur eTask.java:124)
E/AndroidRuntime(1914): at java.util.concurrent.FutureTask$Sync.innerRun(Futu reTask.java:307)
E/AndroidRuntime(1914): at java.util.concurrent.FutureTask.run(FutureTask.jav a:137)
E/AndroidRuntime(1914): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTas k.java:208)
E/AndroidRuntime(1914): at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1076)
E/AndroidRuntime(1914): at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:569)
E/AndroidRuntime(1914): at java.lang.Thread.run(Thread.java:856)
E/AndroidRuntime(1914): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1914): at com.example.senddata.MainActivity$news.doInBackgro und(MainActivity.java:69)
E/AndroidRuntime(1914): at com.example.senddata.MainActivity$news.doInBackgro und(MainActivity.java:1)
E/AndroidRuntime(1914): at android.os.AsyncTask$2.call(AsyncTask.java:264)
E/AndroidRuntime(1914): at java.util.concurrent.FutureTask$Sync.innerRun(Futu reTask.java:305)
E/AndroidRuntime(1914): ... 5 more
E/WindowManager(1914): Activity com.example.senddata.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View@a069a648 that was originally added here
E/WindowManager(1914): android.view.WindowLeaked: Activity com.example.senddata.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$Decor View@a069a648 that was originally added here
E/WindowManager(1914): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:344)
E/WindowManager(1914): at android.view.WindowManagerImpl.addView(WindowManag erImpl.java:267)
E/WindowManager(1914): at android.view.WindowManagerImpl.addView(WindowManag erImpl.java:215)
E/WindowManager(1914): at android.view.WindowManagerImpl$CompatModeWrapper.a ddView(WindowManagerImpl.java:140)
E/WindowManager(1914): at android.view.Window$LocalWindowManager.addView(Win dow.java:537)
E/WindowManager(1914): at android.app.Dialog.show(Dialog.java:278)
E/WindowManager(1914): at com.example.senddata.MainActivity$news.onPreExecut e(MainActivity.java:54)
E/WindowManager(1914): at android.os.AsyncTask.executeOnExecutor(AsyncTask.j ava:561)
E/WindowManager(1914): at android.os.AsyncTask.execute(AsyncTask.java:511)
E/WindowManager(1914): at com.example.senddata.MainActivity.onCreate(MainAct ivity.java:43)
E/WindowManager(1914): at android.app.Activity.performCreate(Activity.java:4 465)
E/WindowManager(1914): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1049)
E/WindowManager(1914): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1920)
E/WindowManager(1914): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1981)
E/WindowManager(1914): at android.app.ActivityThread.access$600(ActivityThre ad.java:123)
E/WindowManager(1914): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1147)
E/WindowManager(1914): at android.os.Handler.dispatchMessage(Handler.java:99 )
E/WindowManager(1914): at android.os.Looper.loop(Looper.java:137)
E/WindowManager(1914): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
E/WindowManager(1914): at java.lang.reflect.Method.invokeNative(Native Method)
E/WindowManager(1914): at java.lang.reflect.Method.invoke(Method.java:511)
E/WindowManager(1914): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
E/WindowManager(1914): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
E/WindowManager(1914): at dalvik.system.NativeStart.main(Native Method)


:متفکر:

vahid-p
پنج شنبه 27 خرداد 1395, 18:26 عصر
توی مرورگر فقط با 127 و لوکال هاست جواب میدهد و بس
توی مرورگر منظورتون چیه؟ مرورگر اندروید (Emulator) یا مرورگر دسکتاپ؟ خب مسلمه مرورگر دسکتاپ که داخل شبیه ساز نیست و مستقیما روی لوکال داره اجرا میشه و localhost و 127.0.0.1 درسته و الان بحث ما مرورگر دسکتاپتون نیست داریم در مورد Emulator صحبت می کنیم.
ولی در مرورگر اندروید (یعنی Browser در Emulator) آی پی های 10.0.2.2 و آی پی شبکه محلی که مثل 192.168xxxxxx است جواب میده (که دلیلش رو باید در شبکه کامپیوتری بخونید)

پورت 3306 رو بیخیال بشید. من فکر کردم شما میخواید به دیتابیس MySql متصل بشید که رو پورت 3306 است. اما شما ورودیتون رو از یه فایل php میگیرید (از طریق http) که روی پورت 80 است. پورت پیشفرض برای http هم 80 پس نیازی نیست پورت رو وارد کنید مثل همون مثالی که زدم (اگر نشد، پورت رو هم وارد کنید)

سعی میکنم یه برنامه ساده بنویسم که عملکردش رو ببینید. هر چند طبق این مثال میبینید آی پی درسته و برنامتون مشکل داره.

ضمنا ردیف کردن خطاها وقتی خطا واضح نیست، نمیتونه کمکی به ما بکنه تا بتونیم راهنمایی کنیم. مثلا
E/Buffer Error(1747): Error converting result java.lang.NullPointerException
که باید برنامش رو داشته باشیم تا بتونیم تشخیص بدیم مشکل از چیه.

خواستید برنامتون رو (zip شده کل پروژه نه فقط کد یک کلاس) رو بذارید تا debug بشه (شما یه سری کد اینجا گذاشتید، بدون layout و... که باید کلی وقت صرف کنیم پروژه رو درست کنیم تا بشه اجراش کرد!!!)

vahid-p
پنج شنبه 27 خرداد 1395, 19:09 عصر
اینم یه مثال:
به AndroidManifest.xml دسترسی رو به اینترنت اضافه کن: (اگر برای اندروید 6 میخواید باید در run-time دسترسی رو هم چک کنی)
<uses-permission android:name="android.permission.INTERNET"/>

کد layout رو بذار:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/urlBox"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="42dp"
android:enabled="true"
android:hint="Enter Address"
android:layout_toLeftOf="@+id/button"
android:layout_toStartOf="@+id/button" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
android:id="@+id/button"
android:layout_alignBottom="@+id/urlBox"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Content"
android:id="@+id/resultBox"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/button"
android:layout_alignEnd="@+id/button" />

</RelativeLayout>

و کد جاوای متناظر با این layout:

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;


public class MainActivity extends Activity {
private Button submit;
private EditText urlBox;
private TextView resultBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

submit=(Button) findViewById(R.id.button);
urlBox=(EditText) findViewById(R.id.urlBox);
resultBox=(TextView) findViewById(R.id.resultBox);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Browser().execute(urlBox.getText().toString());
Toast.makeText(getApplicationContext(),"Fetching from "+urlBox.getText().toString(),Toast.LENGTH_SHORT);
}
});
}

class Browser extends AsyncTask<String, Void,String>{

@Override
protected String doInBackground(String... strings) {
if(strings==null || strings.length<1){
return "";
}
HttpURLConnection connection = null;
StringBuilder stringBuilder=new StringBuilder("");
try {
URL url=new URL(strings[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
//Response
if(connection.getResponseCode()==HttpURLConnection .HTTP_OK){
Scanner cin=new Scanner(connection.getInputStream());
while (cin.hasNextLine()){
stringBuilder.append(cin.nextLine());
}
}
} catch (MalformedURLException e) {
Toast.makeText(getApplicationContext(),"Address is not valid ",Toast.LENGTH_LONG);
} catch (IOException e) {
Toast.makeText(getApplicationContext(),"Error in Connection ",Toast.LENGTH_LONG);
} finally {
if(connection!=null){
connection.disconnect();
}
return stringBuilder.toString();
}
}

@Override
protected void onPostExecute(String s) {
resultBox.setText(s);
}
}
}

و خروجی:
http://s7.picofile.com/file/8256083118/test_ip.jpg

asemaneiran
جمعه 28 خرداد 1395, 17:58 عصر
سلام
ممنونم از لطفتون
بفرمایید
پروژه تست2 خطای ارور کانکشن میده و پروژه تست3 برنامه بسته میشه
اولی طبق سایت stackoverflow و دومی طبق اموزش codeproject هست
ممنون میشم ببینیدشون و راهنمایی کنید مشکل کجاست

140900140900140900

vahid-p
شنبه 29 خرداد 1395, 06:26 صبح
هر چند بازم پروژه رو ناقص فرستادید، ولی برنامه اولت در Thread اصلی connection برقرار کردید که این کار اشتباهه و باید از AsyncTask (یا روشی مثل Message Passing) استفاده کنید. چون connection یک عمل زمان بره و thread اصلی میخواد UI رو آپدیت کنه و شما نباید اون رو با عملیات زمان بر اشغال کنید.

برنامه دومت رو چک نکردم.
شما اول یک Connection ساده رو انجام بدید، بعد پارامتر ارسال کنید و فایل Json هندل کنید.

مثالی که براتون نوشتم دقیقا این کار رو میکنه با همون فایل php که در پست 10 گذاشتید. این رو برای خودتون اجرا کنید، بعد سعی کنید همون رو اگر میخواید با کتابخونه org.apache.http بنویسید و هر وقت جواب گرفتید اونوقت اون رو گسترش بدید (اضافه کردن Json و...)

به نظرم سوال این تاپیک "ارتباط با لوکال هاست از طریق Emulator" پاسخ داده شده (به همراه کد در پست 17 این تاپیک) و ادامه این تاپیک خارج از بحث بوده و مباحث جزئی مرتبط با اندروید است که در جای خود باید فراگرفته شود.