2017-05-05 5 views
0

Ich möchte von URL-Daten erhaltenFehler erhalten Daten von retrofit2

http://cloud.traffy.in.th/apis/apitraffy.php?api=get_bus_line_info&appid=51248f9a&bus_line={bus_line}

und {bus_line} von EditText

Beispiel

http://cloud.traffy.in.th/apis/apitraffy.php?api=get_bus_line_info&appid=51248f9a&bus_line=17

aber ich versuche, Daten von retrofit2 bekommen und Jetzt bekomme ich Fehler

D/Resultttt: Nicht gefunden

Bus.java

public class Bus {

@SerializedName("bus_line") 
    @Expose 
    private String busLine; 
    @SerializedName("start") 
    @Expose 
    private String start; 
    @SerializedName("end") 
    @Expose 
    private String end; 
    @SerializedName("vehicle_type") 
    @Expose 
    private String vehicleType; 
    @SerializedName("owner") 
    @Expose 
    private String owner; 
    @SerializedName("route_type") 
    @Expose 
    private String routeType; 
    @SerializedName("bus_line_id") 
    @Expose 
    private String busLineId; 

    public String getBusLine() { 
    return busLine; 
    } 

    public void setBusLine(String busLine) { 
    this.busLine = busLine; 
    } 


    .... 

} 

Getbus.java

 public interface Getbus { 
    @GET("apis/apitraffy.php") 
    Call<Bus> select(@Query("api") String api, @Query("appid") String appId, @Query("bus_line") String bus_line); 
} 

und MainActivity.java

public class MainActivity extends AppCompatActivity { 

     Button button; 
     EditText editText; 
     TextView textView; 
     private Getbus getbus; 
     private String BASE_URL = "http://cloud.traffy.in.th/"; 
     private String TAG = "fong"; 

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

     button = (Button) findViewById(R.id.button); 
     editText = (EditText) findViewById(R.id.editText); 
     textView = (TextView) findViewById(R.id.textView); 


     Retrofit retrofit = new Retrofit.Builder() 
          .baseUrl(BASE_URL) 
          .addConverterFactory(GsonConverterFactory.create()) 
          .build(); 

     getbus = retrofit.create(Getbus.class); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      String store = editText.getText().toString(); //////store=17 
      loadBus(store); 



      } 
     }); 
     } 

     private void loadBus(String bus_line){ 

    Call<Bus> call = getbus.select(api, appId, bus_line); 
    call.enqueue(new Callback<Bus>() { 
     @Override 
     public void onResponse(Call<Bus> call, Response<Bus> response) { 
     // displayBus(response.body()); 
     if (response.isSuccessful()){ 
      Log.d("Result", response.body().getBusLine()); 
     }else 
     { 
      Log.d("Resultttt",response.message()); 
     } 

     } 

     @Override 
     public void onFailure(Call<Bus> call, Throwable t) { 
     Log.e(TAG,"Errorr: " + t.getMessage()); 
     } 
    }); 
    } 

    private void displayBus(Bus showBus){ 
    if(showBus != null){ 
     String data = showBus.getBusLine(); 
     textView.setText(data); 
    }else { 
     textView.setText("No Busline"); 
    } 
    } 
} 

Ich mag Text von EditText erhalten und zu {bus_line} für Show-Daten

Dank für Ihre Hilfe ersetzen!

Antwort

0

Die Fehlermeldung hat Ihnen genau gesagt, was Sie falsch machen. Ihre Schnittstelle sollte so aussehen:

public interface Getbus { 
    @GET("apis/apitraffy.php") 
    Call<Bus> select(@Query("api") String api, @Query("appid") String appId, @Query("bus_line") String bus_line); 
} 

Wenn Sie nicht jedes Mal in der api und App-ID übergeben wollen, überprüfen Anfrage Abfangjäger.

Für die Protokollierung, fügen Sie diese Abhängigkeiten build.gradle: compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'

und wo Sie Retrofit bauen:

final OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder(); 

      HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); 
      loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
      clientBuilder.addInterceptor(loggingInterceptor); 

final OkHttpClient client = clientBuilder.build(); 
Retrofit retrofit = retrofitBuilder 
       .baseUrl(params.url) 
       .client(client) 
       .build(); 
+0

Danke, Wenn ich das ändern, aber ich habe keine Ahnung, Daten von EditText zu erhalten und ersetzen @Query ("bus_line"), Wie ändere ich? , Entschuldigung, ich bin Neuling über Android –

+0

Fragen Sie, wie man den Wert eines 'EditText' erhalten? Wenn ja, bin ich sicher, dass eine Suche Sie innerhalb von Minuten zur Antwort führt. Es ist auch möglich, dass Sie nicht genau wissen, wie Retrofit funktioniert. Sie rufen 'getBus' auf und übergeben die entsprechenden Argumente. – nasch

+0

Ich habe einen Beitrag bearbeitet und bekomme einen neuen Fehler, bitte überprüfen Sie mich. Danke –