Для этого Я создаю API с двумя маршрутами post/get, чтобы опубликовать элемент и получить все элементы - протестировал его с помощью Postman, и он работает.
Код: Выделить всё
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);
});
Код: Выделить всё
public interface API {
@FormUrlEncoded
@POST("/items")
Call sendData(
@Field("data") String data
);
}
Код: Выделить всё
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();
}
});
}
В целях тестирования я просто жестко закодировал пример строки, которая передается моему методу.
В целях тестирования я просто жестко закодировал пример строки, которая передается в мой метод.
p>
После этого я получаю тост «Провал».
Пытался подключить отладчик к приложению, но это не помогло, по крайней мере, я не смог понять, где ошибка. Я попытался обернуть строку в JSONObject и отправить ее после того, как я использую метод toString() для предоставленных данных, и я попытался изменить тип данных в интерфейсе API на JSONObject и отправить фактический JSONObject вместо вызова метод onString() для данных.
Все это приводит к сбою.
Подробнее здесь: https://stackoverflow.com/questions/754 ... godb-atlas
Мобильная версия