2017-06-18 7 views
1

私のAppをRetrofit 2を使用してローカルWebサービスに接続しようとしていますが、このエラー。私は@GETリクエストを作成し、戻り値がOKのFirefoxを使用しているため、正しいJSONを返すので、Webサービスが応答していると確信しています。Retrofit 2エラー:java.net.SocketTimeoutException:10000後に/192.168.86.1(ポート8080)への接続に失敗しました

アンドロイドでも接続していません。

これは私のMainActivityです:

public class MainActivity extends AppCompatActivity { 

    private String API_BASE_URL="http://192.168.1.32:8080/economarket-restService/resources/androidTest/";   

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     OkHttpClient.Builder httpClient = new OkHttpClient.Builder();    

     Retrofit.Builder builder = new Retrofit.Builder() 
       .baseUrl(API_BASE_URL) 
       .addConverterFactory(GsonConverterFactory.create()); 

     Retrofit retrofit = builder.client(
       httpClient.build() 
     ).build(); 

     ContatoService contato = retrofit.create(ContatoService.class); 

     Call<Contato> repos = contato.listRespos(); //EconomarketService     

     repos.enqueue(new Callback<Contato>() { 
      @Override 
      public void onResponse(Call<Contato> call, Response<Contato> response) { 
       Contato contato = response.body(); 
       Toast.makeText(getBaseContext(), "Return" + contato.getName(), Toast.LENGTH_LONG).show(); 
       Log.d("Retorno",response.toString()); 
      } 

      @Override 
      public void onFailure(Call<Contato> call, Throwable t) { 
       Toast.makeText(getBaseContext(), "Return" + t.toString(), Toast.LENGTH_LONG).show(); 
       Log.d("Retorno",t.toString()); 
      } 
     });      
    }   
} 

マイインタフェース:

public interface ContatoService { 
    @GET("retorna/") 
    Call<Contato> listRespos(); 
} 

モデルクラス(Contato):

public class Contato { 

    @SerializedName("name") 
    private String name; 

    @SerializedName("phone") 
    private int phone; 

    @SerializedName("likes") 
    private int likes; 

    @SerializedName("location") 
    private Location location; 


    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getPhone() { 
     return phone; 
    } 

    public void setPhone(int phone) { 
     this.phone = phone; 
    } 

    public int getLikes() { 
     return likes; 
    } 

    public void setLikes(int likes) { 
     this.likes = likes; 
    } 



    public Location getLocation() { 
     return location; 
    } 

    public void setLocation(Location location) { 
     this.location = location; 
    } 
} 

モデルクラス(場所):

public class Location{ 

} 
+0

サーバー上のFirefoxツールではなく、電話機のブラウザを使用します。接続できない場合は、ファイアウォールの問題です。 –

+0

よろしくお願いします。私は電話機のブラウザでテストして、それも正しくjsonを返しました。 – Apolo

+0

あなたの投稿のタイトルには、 '/ 192.168.86.1'への接続に失敗しました。これはあなたのコードに表示されている同じURLではありません –

答えて

1

問題が解決しました。問題がAPI_BASE_URLた、THI urlが唯一持っている必要があります。

"http://192.168.1.32:8080/"

とURLの残りの部分をインターフェイスにする必要があります:

@GET("economarket-restService/resources/androidTest/retorna/‌​"). 

それはすべてのルートを宣言するために沸きますURL_BASEのURLとurlディレクトリのアクセスは、インターフェイス上になければなりません。

+0

'@ GET'はベースURLに単純に付加されているので、これは修正です –

関連する問題