Поэтому я пишу код для подключения к веб-серверу heroku для чата, который позволяет пользователю создавать сообщения и публиковать их на доске объявлений.Однако по какой-то причине, когда я отправляю почтовый запрос на веб-сервер для создания нового сообщения в базу данных, я получаю сообщение об ошибке.
Вот код, который обрабатывает почтовый запрос:
//POST route for creating new message
Spark.post("/messages", (request, response) -> {
// NB: if gson.Json fails, Spark will reply with status 500 Internal
// Server Error
//int idx = Integer.parseInt(request.params("content"));
String mSubject = request.queryParams("mSubject");
//SimpleRequest req = gson.fromJson(request.queryParams("mSubject"));
// ensure status 200 OK, with a MIME type of JSON
// NB: even on error, we return 200, but with a JSON object that
// describes the error.
response.status(200);
response.type("application/json");
// NB: createEntry checks for null title and message
// int newId = dataStore.createEntry(req.mTitle, req.mMessage);
// checks if both upvote and downvote request is received, and if not send out create message response
//System.out.println(mSubject);
int newId = db.insertRow(mSubject);
//int newId = db.insertRow(req.mSubject);
System.out.println(newId);
if (newId == 0 || newId == -1) {
return gson.toJson(new StructuredResponse("error", "error performing insertion", null));
}
return gson.toJson(new StructuredResponse("ok", "" + newId, null));
});
Это письменный запрос для кода:
db.mCreateMessage = db.mConnection.prepareStatement("INSERT INTO tbldata (id, content, createdat, upvotes, downvotes, visible) VALUES (DEFAULT,?,?,?,?,?)");
А вот код, который вставляетновая строка в базе данных
/**
* Insert a row into the database
*
* @param message The message body for this new row
*
* @return The number of rows that were inserted
*/
int insertRow(String message) {
int count = 0;
try {
String name = "chadd";
mCreateMessage.setString(1, message);
mCreateMessage.setString(2, name);
mCreateMessage.setInt(3, 0);
mCreateMessage.setInt(4, 0);
mCreateMessage.setString(5, "True");
System.out.println(mCreateMessage);
count += mCreateMessage.executeUpdate();
//System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}
Но каждый раз, когда я пытаюсь выполнить почтовый запрос, он отправляет мне этот журнал ошибок:
2019-09-27T15:23:36.641372+00:00 app[web.1]: [Thread-1] INFO org.eclipse.jetty.server.Server - Started @5550ms
2019-09-27T15:23:39.780232+00:00 app[web.1]: INSERT INTO tbldata (id, content, createdat, upvotes, downvotes, visible) VALUES (DEFAULT,'testing meeting','chadd',0,0,'True')
2019-09-27T15:23:39.821637+00:00 app[web.1]: org.postgresql.util.PSQLException: ERROR: syntax error at or near "INSERT INTO tbldata "
2019-09-27T15:23:39.821648+00:00 app[web.1]: Position: 1
2019-09-27T15:23:39.830265+00:00 app[web.1]: at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2476)
2019-09-27T15:23:39.830324+00:00 app[web.1]: at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2189)
2019-09-27T15:23:39.830398+00:00 app[web.1]: at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300)
2019-09-27T15:23:39.830483+00:00 app[web.1]: at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428)
2019-09-27T15:23:39.830534+00:00 app[web.1]: at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354)
2019-09-27T15:23:39.830602+00:00 app[web.1]: at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:169)
2019-09-27T15:23:39.830676+00:00 app[web.1]: at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:136)
2019-09-27T15:23:39.830769+00:00 app[web.1]: at edu.lehigh.cse216.cjn221.backend.Database.insertRow(Database.java:265)
2019-09-27T15:23:39.830831+00:00 app[web.1]: at edu.lehigh.cse216.cjn221.backend.App.lambda$main$4(App.java:242)
2019-09-27T15:23:39.831513+00:00 app[web.1]: at spark.RouteImpl$1.handle(RouteImpl.java:72)
2019-09-27T15:23:39.831566+00:00 app[web.1]: at spark.http.matching.Routes.execute(Routes.java:61)
2019-09-27T15:23:39.831643+00:00 app[web.1]: at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134)
2019-09-27T15:23:39.831712+00:00 app[web.1]: at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
2019-09-27T15:23:39.831779+00:00 app[web.1]: at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671)
2019-09-27T15:23:39.831959+00:00 app[web.1]: at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
2019-09-27T15:23:39.831962+00:00 app[web.1]: at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
2019-09-27T15:23:39.831968+00:00 app[web.1]: at org.eclipse.jetty.server.Server.handle(Server.java:505)
2019-09-27T15:23:39.832036+00:00 app[web.1]: at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
2019-09-27T15:23:39.832096+00:00 app[web.1]: at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
2019-09-27T15:23:39.832172+00:00 app[web.1]: at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
2019-09-27T15:23:39.832243+00:00 app[web.1]: at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
2019-09-27T15:23:39.832311+00:00 app[web.1]: at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
2019-09-27T15:23:39.832381+00:00 app[web.1]: at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
2019-09-27T15:23:39.832456+00:00 app[web.1]: at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
2019-09-27T15:23:39.832810+00:00 app[web.1]: at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
2019-09-27T15:23:39.832881+00:00 app[web.1]: at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
2019-09-27T15:23:39.832945+00:00 app[web.1]: at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
2019-09-27T15:23:39.832995+00:00 app[web.1]: at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
2019-09-27T15:23:39.833073+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:748)
Что странно в этой ошибке, так это то, что если явыполнить запрос на postico (буквально копируя и вставляя его из журналов), он работает отлично.