آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

11-0-1 دریافت اطلاعات سایت

moin  11 سال پیش  11 سال پیش
+1 0

با سلام مشکل من سر برنامه نویسی  برای دریافت اطلاعات سایت هست.

کدی که من نوشتم سبب میشه برنامه اصلا اجرا نشه  و خود بخود بسته بشه .مجوز دسترسی به اینترنت دادم ، پروژه رو کلین هم کردم ، روی گوشی هم اجرا نمیشه .

 

 package ans.nima.clienttest;

import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.*;
import org.w3c.dom.Text;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        HttpClient client =new DefaultHttpClient();
        HttpPost method=new HttpPost("http://www.google.com");
        try
        {
            HttpResponse response =client.execute(method);
            int code = response.getStatusLine().getStatusCode();
            Log.i("LOG","Code "+code);
        }
        catch(ClientProtocolException e)
        {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
       

   
    }


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

این هم اطلاعات درج شده در log

 

 04-01 13:52:18.400: W/dalvikvm(3334): threadid=1: thread exiting with uncaught exception (group=0x414c4700)
04-01 13:52:18.421: E/AndroidRuntime(3334): FATAL EXCEPTION: main
04-01 13:52:18.421: E/AndroidRuntime(3334): java.lang.RuntimeException: Unable to start activity ComponentInfo{ans.nima.clienttest/ans.nima.clienttest.MainActivity}: android.os.NetworkOnMainThreadException
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.os.Looper.loop(Looper.java:137)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.ActivityThread.main(ActivityThread.java:5103)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at java.lang.reflect.Method.invokeNative(Native Method)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at java.lang.reflect.Method.invoke(Method.java:525)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at dalvik.system.NativeStart.main(Native Method)
04-01 13:52:18.421: E/AndroidRuntime(3334): Caused by: android.os.NetworkOnMainThreadException
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at ans.nima.clienttest.MainActivity.onCreate(MainActivity.java:32)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.Activity.performCreate(Activity.java:5133)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-01 13:52:18.421: E/AndroidRuntime(3334):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
04-01 13:52:18.421: E/AndroidRuntime(3334):     ... 11 more
04-01 14:02:28.500: D/AndroidRuntime(3397): Shutting down VM
04-01 14:02:28.500: W/dalvikvm(3397): threadid=1: thread exiting with uncaught exception (group=0x414c4700)
04-01 14:02:28.520: E/AndroidRuntime(3397): FATAL EXCEPTION: main
04-01 14:02:28.520: E/AndroidRuntime(3397): java.lang.RuntimeException: Unable to start activity ComponentInfo{ans.nima.clienttest/ans.nima.clienttest.MainActivity}: android.os.NetworkOnMainThreadException
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.os.Looper.loop(Looper.java:137)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.ActivityThread.main(ActivityThread.java:5103)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at java.lang.reflect.Method.invokeNative(Native Method)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at java.lang.reflect.Method.invoke(Method.java:525)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at dalvik.system.NativeStart.main(Native Method)
04-01 14:02:28.520: E/AndroidRuntime(3397): Caused by: android.os.NetworkOnMainThreadException
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at ans.nima.clienttest.MainActivity.onCreate(MainActivity.java:31)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.Activity.performCreate(Activity.java:5133)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-01 14:02:28.520: E/AndroidRuntime(3397):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
04-01 14:02:28.520: E/AndroidRuntime(3397):     ... 11 more
+2 0
لطفا سوالتون رو تمیز کنید < و از تگ هایمربوط به قرار دادن کد استفاده کنید < ( به قول یکی از مدیرها یه قوانین سایت احترام بزارید تا کاربران به سوال شما احترام بزارند ) (11 سال پیش)
0 0
بجای HttpPost باید HttpGet بنویسید < حدودا خط 30 هست (11 سال پیش)
+1 0
جستجو کنید در انجمن "NetworkOnMainThreadException" (11 سال پیش)
0 0
برای شروع کار من در فایل مانیفست 3 عنصر android:targetSdkVersi android:allowBackup="true" android:theme="@style/AppTheme" را حذف کردم و برای سایت گوگل بجای httpPost از httpGet استفاده کردم و مشکل حل شد و کد 200 ( به معنای موفقیت در درخواست ) را دریافت کردم . (11 سال پیش)
0 0
برای شروع کار من در فایل مانیفست 3 عنصر android:targetSdkVersi android:allowBackup="true" android:theme="@style/AppTheme" را حذف کردم و برای سایت گوگل بجای httpPost از httpGet استفاده کردم و مشکل حل شد و کد 200 ( به معنای موفقیت در درخواست ) را دریافت کردم . ولی مسلما این راه حل مناسب و جامع نیست . اگر چیز بهتری فهمیدم حتما مطرح می کنم . (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
حمید زمانی  11 سال پیش
+1 0

من هم مثل شما همین مشکل رو داشتم ، راه حل اینه که شما باید یک thread جداگانه استخدام کنی و تمامی مراحل اتصال به اینترنت رو در داخل اون انجام بدی وگرنه دچار خطای NetworkOnMainThread میشی

پاسخ به سوال 
moin  11 سال پیش
+2 0

تا اینجایی که من رفتم جلو چند روش پیدا کردم یکیش همینیه که شما عرض کردین یعنی ترد جداگانه و ممنون از کمکتون

دومیش حذف سه عنصر از ///////////android:targetSdkVersion ///////////// android:allowBackup="true" android:theme="@style/AppTheme" ////  از داخل فایل مانیفست Manifest.xml هست

سومین روش استفاده از دستورات زیر هست که باید در متد onCreate اکتیویتی که تابع اتصال به اینترنت و درخواست اتصال درون اون نوشته شده قرار داد :
       

		StrictMode.ThreadPolicy policy= new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

+1 0
راه اصولی رو گذاشتین کنار از راه های متفرقه استفاده کردین بعداً به مشکل خواهید خورد. (11 سال پیش)
+1 0
نه جناب ، من همه راه حلهایی که جواب دادن ، بیان کردم راه اصولیش استفاده از ترد جداگانس ، اگه چیز دیگه ای هست بنده رو راهنمایی کنید ، ممنون میشم . (11 سال پیش)
+1 0
نه من فک کردم منظورتون اینه که از روش سوم دارید استفاده میکنید. من اشتباه برداشت کردم، عذر میخوام :) (11 سال پیش)

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