11-0-1 دریافت اطلاعات سایت
با سلام مشکل من سر برنامه نویسی برای دریافت اطلاعات سایت هست.
کدی که من نوشتم سبب میشه برنامه اصلا اجرا نشه و خود بخود بسته بشه .مجوز دسترسی به اینترنت دادم ، پروژه رو کلین هم کردم ، روی گوشی هم اجرا نمیشه .
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
من هم مثل شما همین مشکل رو داشتم ، راه حل اینه که شما باید یک thread جداگانه استخدام کنی و تمامی مراحل اتصال به اینترنت رو در داخل اون انجام بدی وگرنه دچار خطای NetworkOnMainThread میشی
تا اینجایی که من رفتم جلو چند روش پیدا کردم یکیش همینیه که شما عرض کردین یعنی ترد جداگانه و ممنون از کمکتون
دومیش حذف سه عنصر از ///////////android:targetSdkVersion ///////////// android:allowBackup="true" android:theme="@style/AppTheme" //// از داخل فایل مانیفست Manifest.xml هست
سومین روش استفاده از دستورات زیر هست که باید در متد onCreate اکتیویتی که تابع اتصال به اینترنت و درخواست اتصال درون اون نوشته شده قرار داد :
StrictMode.ThreadPolicy policy= new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .