POST Функция вызывает падение приложения [дубликат]

207
02 июня 2018, 12:40

На данный вопрос уже ответили:

  • Библиотека okhttp, приложение вылетает в официальном примере 1 ответ
  • Исключение NetworkOnMainThreadException 1 ответ

написал маленький код для отправки POST запроса на сайт, вообще нифига, вылеты, вот сам код:

public class MainActivity extends AppCompatActivity { TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = (TextView) findViewById(R.id.tv);
    Log.d("OKHTTP3", "Post function called.");
    String url = "http://login.mysite.ru/user/login";
    OkHttpClient client = new OkHttpClient();
    MediaType JSON = MediaType.parse("appllication/json;charset=utf-8");
    JSONObject actuldata = new JSONObject();
    try {
        actuldata.put("login","myLogin");
        actuldata.put("password","myPassword1");
    } catch (JSONException e) {
        Log.d("OKHTTP3", "JSON Exception");
        e.printStackTrace();
    }
    RequestBody body = RequestBody.create(JSON, actuldata.toString());
    Log.d("OKHTTP3", "Request body created.");
/*    Request newReq = new Request.Builder()
            .url(url)
            .post(body)
            .build();*/
    Request req = new Request.Builder().url(url).post(body).build();
    try {
        Response response = client.newCall(req).execute();
        Log.d("OKHTTP3", "Request done, go the response.");
        tv.setText(response.body().string());
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

В logcat такое

05-22 17:53:45.955 26910-26910/ru.kiceargy.app D/OKHTTP3: Post function called.
05-22 17:53:45.988 26910-26910/ru.kiceargy.app D/OKHTTP3: Request body created.
05-22 17:53:46.018 26910-26910/ru.kiceargy.app D/AndroidRuntime: Shutting down VM
05-22 17:53:46.019 26910-26910/ru.kiceargy.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ru.kiceargy.app, PID: 26910
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.kiceargy.app/ru.kiceargy.app.MainActivity}: android.os.NetworkOnMainThreadException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
        at android.app.ActivityThread.access$900(ActivityThread.java:154)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:234)
        at android.app.ActivityThread.main(ActivityThread.java:5526)
        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 okhttp3.Dns$1.lookup(Dns.java:39)
        at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:172)
        at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:138)
        at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:80)
        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:178)
        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:129)
        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:98)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
        at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:170)
        at okhttp3.RealCall.execute(RealCall.java:60)
        at ru.kiceargy.app.MainActivity.onCreate(MainActivity.java:55)
        at android.app.Activity.performCreate(Activity.java:6285)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524at android.app.ActivityThread.access$900(ActivityThread.java:154at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391at android.os.Handler.dispatchMessage(Handler.java:102at android.os.Looper.loop(Looper.java:234at android.app.ActivityThread.main(ActivityThread.java:5526at java.lang.reflect.Method.invoke(Native Methodat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616

AsyncTask я вообще не использую и что делать?

READ ALSO
Как понимать работу jvm?

Как понимать работу jvm?

Я начал интересоваться, как работает виртуальная машина Java

254
ObjectMapper: параметризация

ObjectMapper: параметризация

У меня есть JSON, который нужно прочитать в объект при помощи ObjectMapperВыглядит это так:

523
MockMvc: как отправить JSON как RequestPart?

MockMvc: как отправить JSON как RequestPart?

У меня есть контроллер, который принимает два RequestPart: JSON и MultipartFile:

200
Как сделать сайт статичным?

Как сделать сайт статичным?

Хочу что бы сайт отображался на всех устройствах одинаково(отображался так как на 1905px отображается)

179