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

مشکل در گرفتن دیتا در بخش وب سرویس

127509  6 سال پیش  6 سال پیش
0 0

وقتی کد زیر رو اجرا میکنم خطای در عکس ظاهر میشه و برنامه Force Stop نشون میده.permisssion مربوط به اینترنت رو هم قرار دادم

چطوری این مشکل رو برطرف کنم؟

 


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

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://www.google.com");
try {
Log.i("beckon","Wrong Code");
HttpResponse response = client.execute(method);
int code = response.getStatusLine().getStatusCode();
Log.i("log", "code" + code);
InputStream stream = response.getEntity().getContent();

String result = inputstreamToString(stream);
Log.i("Log", "result: " + result);


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

}

private String inputstreamToString(InputStream inputStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();

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

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

return "";
}
}
 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
127509  6 سال پیش
0 0

 پاسخ صحیح

اگر این قطعه کد رو در ابتدای پروژه 

 if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}

و این خط رو در gradle android بزارید مشکل برطرف میشه (app)

در ین حالت مهم نیست که دیگه از کدوم ورژن اندروید استفاده می کنید.(من از ورژن 26 استفاده کردم)

useLibrary 'org.apache.http.legacy'

پاسخ به سوال 
arnouir  6 سال پیش
0 0

از ترد اصلی اپلیکیشن برای وصل شدن به اینترنت نمیشه استفاده کرد , درون یه ترد تازه باید به نت وصل شی :)

new Thread(new Runnable() {
@Override
public void run() {

}
}).start();

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