0

Webservice Daten aus der Datenbank zu holen, wie unten angegeben unten angegeben:Response Message-Not-Code-404 gefunden und Antwort, während der api in Retrofit-Aufruf

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    public static final String BASE_URL = "http://localhost:80/Projecr/"; 

    ApiServices as; 

    TextView tv; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv=(TextView)findViewById(R.id.text); 
     Button btn=(Button)findViewById(R.id.btn); 

     Retrofit retrofit = new Retrofit.Builder() 

       .baseUrl(BASE_URL) 

       .addConverterFactory(GsonConverterFactory.create()) 

       .build(); 
     as=retrofit.create(ApiServices.class); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       load(); 
      } 
     }); 

    } 
    private void load() { 
     try { 
      Call<Example> call = as.List(); 

      call.enqueue(new Callback<Example>() { 
       @Override 
       public void onResponse(Call<Example> call, Response<Example> response) { 
        //  int statusCode = response.code(); 
        if(!response.isSuccessful()) 
        { 
         Log.e("API not success",response.toString()+response.message()+response.errorBody()+response.code()); 
        } 
        Example e = response.body(); 
        if (e == null) { 
         Toast.makeText(getApplicationContext(), "Null", Toast.LENGTH_LONG).show(); 
        } else { 
         Toast.makeText(MainActivity.this, "Not Null", Toast.LENGTH_LONG).show(); 
        } 
       } 

       @Override 
       public void onFailure(Call<Example> call, Throwable t) { 
        Log.e("Failed","t.printStackTrace()"+t.getCause()+t.getMessage()); 
        tv.setText("Failure"); 
       } 
      }); 
     } 
     catch (Exception e) 
     { 
      String TAG="tag"; 
      Log.e(TAG, e.getMessage()); 
     } 
    } 
} 

Example.java

public class Example { 

    @SerializedName("result") 
    @Expose 
    private List<Result> result = null; 

    public List<Result> getResult() { 
     return result; 
    } 

    public void setResult(List<Result> result) { 
     this.result = result; 
    } 

} 

Result.java

public class Result { 

    @SerializedName("id") 
    @Expose 
    private String id; 
    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("address") 
    @Expose 
    private String address; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

} 

ApiServices.java Schnittstelle

public interface ApiServices { 

    @GET("Smart.php") 
    Call<Example> List(); 

} 

activity_main.xml 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.example.saloni.retrofit_sample.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="15dp" 
     android:id="@+id/text" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/btn" 
    android:text="click" 
    /> 
</LinearLayout> 

Als ich dieses Programm ausführen, auf clickin g-Taste, erhalte ich den Toast null und die logcat Ausgabe lautet wie folgt:

E/API nicht Erfolg: [email protected] Nicht gefunden [email protected] 404

Welche bedeutet, dass die Antwortnachricht "Nicht gefunden" lautet und der Antwortcode "404" lautet.

Nach der Bearbeitung des Programms vorgeschlagen und Entfernen von "/", gibt es folgende Fehler in logcat:

E/Fehlgeschlagen: t.printStackTrace() java.lang.UnsupportedOperationException: Schnittstelle kann nicht instanziiert werden ! Schnittstellenname: javax.xml.transform.ResultUnable zum Aufrufen des No-Args-Konstruktors für die Schnittstelle javax.xml.transform.Result. Registrieren Sie einen InstanceCreator mit Gson für diesen Typ, um dieses Problem zu beheben.

Antwort

1
public interface ApiServices { 

@GET("/Smart.php") 
Call<List<Result>> List(); 

} 

statt

public interface ApiServices { 

@GET("Smart.php") 
Call<List<Result>> List(); 

} 
+0

umbenannt Nach der Anwendung Ihres Vorschlags und Bearbeiten des Codes, gibt es einen anderen Fehler als bearbeitet in der post.Plz führen Sie mich weiter – seilena

+0

Es ist nicht Code Problem überprüfen Sie Ihre JSON Antwort ich denke, Sie erhalten Liste nicht Beispielobjekt –

0

ich diesen Fehler erfolgreich ohne weitere Fehler behoben. Meine Result.java-Klasse steht im Konflikt mit der javax.xml.transform.Result-Klasse. Also habe ich meine Result.java Klasse

Verwandte Themen