متوقف شدن برنامه در هنگام استفاده از HttpUrlConnection
با سلام خدمت استاد عزیز و تمامی برنامه نویسان
همونطور که میدونیم اندروید در Api های جدید ترش از HttpClient پشتیبانی نمیکنه
به همین خاطر بنده از HtmlUrlConnection رو جایگزینش کردم.در ارتباط با وب سرویسی که روی localHost قرار داره مشکلی ندارم ولی در ارتباط با یک وب سرویس از طریق اینترنت برنامه unfortunately has stopped میشه.اگر دوستان لطف کنن یه بررسی کنم ممنون میشم
اینم کد برنامم:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://www.thunder3000.000webhostapp.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Log.i("Log",connection.getResponseCode()+"");
InputStream stream=connection.getInputStream();
TextView txtView=(TextView)findViewById(R.id.txtHello);
BufferedReader reader=new BufferedReader(new InputStreamReader(stream));
String line="";
StringBuilder builder=new StringBuilder();
while((line=reader.readLine())!=null)
{
builder.append(line);
}
txtView.setText(builder.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
از sdk 23 به بعد از httpClient پشتیبانی نمیشه شما میتونید از sdk 22 استفاده کنید یا از okHttp کنید البته با اضافه کردن تکه کد زیر در فایل gradle میتونید از httpClient حتی در sdk23 به بعد نیز استفاده کنید. (خودم توی پروژم دارم استفاده میکنم و کاملا جواب میده)
android {
useLibrary 'org.apache.http.legacy'
}
اما کد شما مشکل اش اینه که دارید توی Thread ایی غیر از Main Thread با UI کار میکنید و TextView رو setText میکنید.که برای این کار باید از handler استفاده کنید.
new Handler().post(new Runnable() {
@Override
public void run() {
txtView.setText(builder.toString());
}
});
از android.os.Handler استفاده کنید.
import android.os.Handler
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .