PDA

View Full Version : چک کردن اتصال به اینترنت و دریافت اطلاعات



sajadpm
چهارشنبه 24 مهر 1392, 11:23 صبح
با سلام و خسته نباشید

ابتدا عید رو به همه ی دوستان و اساتید انجمن تبریک عرض می کنم و من از josn برای دریافت اطلاعات از وب استفاده می کنم که کد زیر class اش می باشد :

public JSONObject getJSONFromUrl(String url, List<NameValuePair> params) {

// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}

// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

حالا در اینجا اگر در حالت معمولی به اینترنت متصل باشید هیچ مشکلی به وجود نمی یاد اگر به اینترنت متصل باشید ولی به زمانی که به اینترنت متصل هستید ولی مشکلی در اتصال وجود دارد برنامه این ارور رو در logcat نشان و برنامه فورس کلوز میده :


Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject

حالا با توجه به این من می خواهم به وسیله ی http request بفرستم برای چک کردن اینترنت با توجه به این تاپیک : http://barnamenevis.org/showthread.php?421467-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9-%D8%A7%D8%B2-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA&p=1885850&viewfull=1#post1885850 ولی این کد برای آندروید 4 به بالا کار نمی کند چون باید از asynctask استفاده بشود !

لطفا من رو راهنمایی نماید از چه روشی استفاده کنم ؟ الان نرم افزار مارکت های موجود در از چه روشی استفاده می کنند که می نویسد مشکل در ارتباط ! ؟

پیشاپیش از راهنمایی شما سپاس گزارم ؟

Sync.Master
چهارشنبه 24 مهر 1392, 11:38 صبح
من این صفحه رو ذخیره کردم ، نتونستم لینکشو بزارم ، تیترش اینه Android Check Mobile Internet Connection


http://android.programmerguru.com/category/network/

sajadpm
چهارشنبه 24 مهر 1392, 14:24 عصر
تشکر از پاسخ شما ، این روش شما فکر می کنم فقط در صورتی اتصال رو چک می کند که از اینترنت 3g یا اتصال های غیر wifi رو چک می کند . در صورتی که از اتصال wifi استفاده کنیم ، اتصال به اینترنت رو چک نمی کند ؟

Sync.Master
چهارشنبه 24 مهر 1392, 15:01 عصر
public class ConnectionDetector {

private Context _context;

public ConnectionDetector(Context context) {
this._context = context;
}

public boolean isConnectingToInternet() {
ConnectivityManager connectivity = (ConnectivityManager) _context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}

}
return false;

}

}


این ولی فکر کنم همشو چک میکنه

sajadpm
پنج شنبه 25 مهر 1392, 13:14 عصر
تشکر دوباره از پاسخ شما ، متاسفانه این کد فقط بررسی اتصال رو چک می کند در صورتی که من می خواهم اتصال به شبکه اینترنت رو چک کند اگر مشکلی داشت خطا بدهد ! مثال زمانی شما به wifi متصل هستید ولی اینترنت شما از طرف شرکت ارائه دهنده قطع می باشد حالا اگر برنامه رو باز کنید چک می کند می بیند به wifi متصل است و به اینترنت دستور را می فرستد در صورتی که اتصال به شبکه قطع بوده و دستور خالی بر می گردد و برنامه crash می کند !

Sync.Master
پنج شنبه 25 مهر 1392, 13:29 عصر
خب راهش همونیه که من قبلا پرسیدم و شما بالا لینکشو گذاشتید ، خب تو اندروید 4 خطا میده اگه اون خطا رو جستجو کنید ، راه حلش دو خط کد هستش که مشکل رو حل میکنه ( قبل عضویتم تو انجمن همینجاها دیده بودم )