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

مشکل در اتصال به سرور

سالار  9 سال پیش  9 سال پیش
0 0

من تو اتصال به سرور یه مشکلی دارم

دارم از sdk 23 استفاده میکنم برای اتصال اومدم کد زیر رو تو gradle اضافه کردم که بتونم از کلاس HttpClient استفاده کنم

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

و مثل آموزش ها کد زیر رو نوشتم

package ir.google_source.app.my.salar.myapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost("http://google.com");
try{
HttpResponse response = client.execute(method);
int code = response.getStatusLine().getStatusCode();
Log.i("LOG","colde: " + code);
}
catch (ClientProtocolException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}
}

ولی این اررور رو گرفتم

06-01 12:38:40.554 20310-20310/ir.google_source.app.my.salar.myapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                     Process: ir.google_source.app.my.salar.myapp, PID: 20310
                                                                                     java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.google_source.app.my.salar.myapp/ir.google_source.app.my.salar.myapp.MainActivity}: android.os.NetworkOnMainThreadException
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                                         at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                         at android.os.Looper.loop(Looper.java:148)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                                      Caused by: android.os.NetworkOnMainThreadException
                                                                                         at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
                                                                                         at java.net.InetAddress.lookupHostByName(InetAddress.java:431)
                                                                                         at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
                                                                                         at java.net.InetAddress.getAllByName(InetAddress.java:215)
                                                                                         at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:142)
                                                                                         at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
                                                                                         at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
                                                                                         at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)
                                                                                         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
                                                                                         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
                                                                                         at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
                                                                                         at ir.google_source.app.my.salar.myapp.MainActivity.onCreate(MainActivity.java:25)
                                                                                         at android.app.Activity.performCreate(Activity.java:6237)
                                                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                                         at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                         at android.os.Looper.loop(Looper.java:148)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                         at java.lang.reflect.Method.invoke(Native Method)

اومدم از URLConnection به صورت زیر استفاده کردم بازهم همین ارور رو داد

     public static String getContents(String url) {
        String contents = "";

        try {
            URLConnection conn = new URL(url).openConnection();

            InputStream in = conn.getInputStream();
            contents = convertInputStreamToString(in);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return contents;
    }

    private static String convertInputStreamToString(InputStream inputStream) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder builder = new StringBuilder();

            String line = "";

            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }

            return builder.toString();
        }
        catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

مشکل کجاست؟

0 0
باید از ترد استفاده کنی و تو ترد به نتورک دسترسی داشته باشی (9 سال پیش)
0 0
یه ترد بسازم و بندازمش تو ترد؟ (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
سالار  9 سال پیش
0 0

اینو گذاشتم درست شد

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

کار درستی هست؟


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