Dafür Ich baue eine API mit 2 Routen „Post/Get“, um einen Artikel zu posten und alle Artikel zu erhalten – habe es mit Postman getestet und es funktioniert.
Code: Select all
app.get('/items', async (req, res) => {
const collection = client.db('codes').collection('QR');
const items = await collection.find({}).toArray();
res.send(items);
});
app.post('/items', async (req, res) => {
const collection = client.db('codes').collection('QR');
const result = await collection.insertOne(req.body);
res.send(result);
});
Code: Select all
public interface API {
@FormUrlEncoded
@POST("/items")
Call sendData(
@Field("data") String data
);
}
Code: Select all
public void addStuff(String data){
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("data", data);
} catch (JSONException e) {
e.printStackTrace();
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:3000")
.addConverterFactory(ScalarsConverterFactory.create())
.build();
API api = retrofit.create(API.class);
Call call = api.sendData(jsonObject.toString());
call.enqueue(new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) {
if (response.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Successfully added data to the Database", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Error getting data from the database" + response.message(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(@NonNull Call call, @NonNull Throwable t) {
Toast.makeText(getApplicationContext(), "Failure", Toast.LENGTH_LONG).show();
}
});
}
Zu Testzwecken habe ich gerade eine Beispielzeichenfolge fest codiert, die an meine Methode übergeben wird.
Danach bekomme ich den „Fehler“-Toast.
Ich habe versucht, den Debugger an die App anzuhängen, aber das hat nicht wirklich geklappt, zumindest konnte ich es nicht Finden Sie heraus, wo der Fehler liegt. Ich habe versucht, den String in ein JSONObject zu packen und ihn zu senden, nachdem ich die toString()-Methode für die bereitgestellten Daten verwendet habe, und ich habe versucht, den Datentyp in der API-Schnittstelle in JSONObject zu ändern und ein tatsächliches JSONObject zu senden, anstatt es aufzurufen die onString()-Methode für die Daten.
Alles davon führt zu einem Fehler.