2016-07-03 2 views
-1

Я использовал okhttp, чтобы получить запрос на отправку в мой файл user.php, который находится на сервере localhost, работающем от wamp. Когда я запускаю приложение, я не знаю, почему метод onclick запускался автоматически (у меня есть только одна кнопка в файле XML без установки onclick. Это было в моем коде). В то время как я смотрел мой журнал кота я видел исключение: первое одно:Не могу получить ответ при использовании okHttp3

Http3: ran into exception: socket failed: EACCES (Permission denied) 

Я добавил

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

но я все еще получаю ту же ошибку в этом случае после этого я получаю другую ошибку, которая говорит Могли не выполнить метод для Android: OnClick

И это моя полная часть ошибки:

07-03 07:48:55.453 31858-32293/com.example.android.okhttp3 D/Http3: get Function Called 
07-03 07:48:55.453 31858-32293/com.example.android.okhttp3 D/Http3: Client Created 
07-03 07:48:55.453 31858-32293/com.example.android.okhttp3 D/Http3: Request Build successful 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err: java.net.SocketTimeoutException 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.Okio$2.read(Okio.java:139) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.AsyncTimeout$2.read(AsyncTimeout.java:211) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.RealBufferedSource.indexOf(RealBufferedSource.java:306) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.RealBufferedSource.indexOf(RealBufferedSource.java:300) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.Http1xStream.readResponse(Http1xStream.java:184) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:125) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:723) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine.access$200(HttpEngine.java:81) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:708) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine.readResponse(HttpEngine.java:563) 
07-03 07:49:05.489 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall.getResponse(RealCall.java:241) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall.execute(RealCall.java:57) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at com.example.android.okhttp3.MainActivity.DoGetRequest(MainActivity.java:59) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at com.example.android.okhttp3.MainActivity.access$000(MainActivity.java:18) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at com.example.android.okhttp3.MainActivity$1.doInBackground(MainActivity.java:39) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
07-03 07:49:05.493 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at java.lang.Thread.run(Thread.java:856) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 D/Http3: ran into exception: null 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err: java.net.SocketTimeoutException 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.Okio$2.read(Okio.java:139) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.AsyncTimeout$2.read(AsyncTimeout.java:211) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.RealBufferedSource.indexOf(RealBufferedSource.java:306) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.RealBufferedSource.indexOf(RealBufferedSource.java:300) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.Http1xStream.readResponse(Http1xStream.java:184) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:125) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:723) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine.access$200(HttpEngine.java:81) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:708) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.internal.http.HttpEngine.readResponse(HttpEngine.java:563) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall.getResponse(RealCall.java:241) 
07-03 07:49:05.497 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198) 
07-03 07:49:05.501 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160) 
07-03 07:49:05.501 31858-32293/com.example.android.okhttp3 W/System.err:  at okhttp3.RealCall.execute(RealCall.java:57) 
07-03 07:49:05.501 31858-32293/com.example.android.okhttp3 W/System.err:  at com.example.android.okhttp3.MainActivity.DoGetRequest(MainActivity.java:59) 
07-03 07:49:05.501 31858-32293/com.example.android.okhttp3 W/System.err:  at com.example.android.okhttp3.MainActivity.access$000(MainActivity.java:18) 
07-03 07:49:05.501 31858-32293/com.example.android.okhttp3 W/System.err:  at com.example.android.okhttp3.MainActivity$1.doInBackground(MainActivity.java:39) 
07-03 07:49:05.501 31858-32293/com.example.android.okhttp3 W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
07-03 07:49:05.501 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
07-03 07:49:05.505 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
07-03 07:49:05.505 31858-32293/com.example.android.okhttp3 W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
07-03 07:49:05.505 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
07-03 07:49:05.505 31858-32293/com.example.android.okhttp3 W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
07-03 07:49:05.505 31858-32293/com.example.android.okhttp3 W/System.err:  at java.lang.Thread.run(Thread.java:856) 

Это мой код:

package com.example.android.okhttp3; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

import java.io.IOException; 

import okhttp3.Call; 
import okhttp3.Callback; 
import okhttp3.OkHttpClient; 
import okhttp3.Request; 
import okhttp3.Response; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    private Button GetReuqest,PostRequest; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     GetReuqest=(Button)findViewById(R.id.getrequest); 
     GetReuqest.setOnClickListener(this); 
    } 


    @Override 
    public void onClick(View v) { 
     switch (v.getId()) 
     { 
      case R.id.getrequest: { 
       new AsyncTask() { 
       @Override 
       protected Object doInBackground(Object[] params) { 
        DoGetRequest(); 
        return null; 
       } 
      }.execute(); 
      } 

     } 

    } 
    private void DoGetRequest() 
    { 
     Log.d("Http3","get Function Called"); 
     String url="http://10.0.2.2/user.php"; 
     OkHttpClient client=new OkHttpClient(); 
     Log.d("Http3","Client Created"); 
     Request newRequest=new Request.Builder() 
       .url(url) 
       .build(); 
     Log.d("Http3","Request Build successful"); 
     try { 
      Response response=client.newCall(newRequest).execute(); 
      Log.d("Http3","Get Called responese"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.d("Http3","ran into exception: "+e.getMessage()); 
     } 
    } 
} 

я получаю исключение после

+0

, а также это мой файл манифеста http://paste.ofcode.org/ae4GcWUAvH3jgFnyPtyu2X – Jumong

+0

Эта трассировка стека не соответствует этому коду. Если это действительно тот код, с которым вы сейчас работаете, попробуйте очистить/перестроить свой проект и запустить его снова. –

+0

Кстати, с этим кодом, нажав кнопку 'GetReuqest'' Button, на самом деле ничего не должно делать, поскольку вы не вызываете 'start()' в 'Thread'. –

ответ

1

Пожалуйста, проверьте ваш IP в соответствии с эмулятором.

Использовать 10.0.2.2 для AVD и 10.0.3.2 для genymotion.

-1

Дайте ниже разрешения в файле AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/> 
+0

, пожалуйста, проверьте манифест link – Sush

+0

, пожалуйста, проверьте мой файл манифеста, который я добавил до – Jumong

+0

это разрешение не работает для меня. поэтому я использую это разрешение – vinoth12594

-1

Вызванный: android.os.NetworkOnMainThreadException на android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1117) в libco re.io.BlockGuardOs.connect (BlockGuardOs.java:84) на libcore.io.IoBridge.connectErrno (IoBridge.java:144) на libcore.io.IoBridge.connect (IoBridge.java:112)

Здесь вы в основном пытаетесь подключиться к сети в основном потоке. попробуйте ниже код

@Override 
public void onClick(View v) { 
    switch (v.getId()) 
    { 
     case R.id.getrequest: { 
      new AsyncTask() { 
     @Override 
     protected Object doInBackground(Object[] params) { 
      DoGetRequest(); 
     } 
    }.execute(); 

     } 

    } 

} 

предложение: GetReuqest,PostRequest,DoGetRequest(), пожалуйста, следуйте camelcasing

+0

ничего не изменилось, я все равно получаю ту же самую проблему – Jumong

+0

, пожалуйста, очистите старые журналы, удалите и установите приложение еще раз, если запускаете те же проблемы опубликовать журналы – Sush

+0

java.net.Изменен шаблон удаления SocketTimeoutException. поэтому сетевой вызов ui thread был правильным. теперь попробуйте нажать «http://10.0.2.2/user.php» url из браузера для рабочего стола .. и, пожалуйста, проверьте, что мобильный или emualor и wamp в той же сети – Sush