У меня есть код сервлета, где я хочу получить действительный ответ. Это оригинальная раскладка запроса
{
"function": "Check",
"teamId": "<teamId>",
"teamKey": "<teamKey>",
"requestId": "<request-id>",
"firstName": "<FirstName>",
"lastName": "<LastName>",
"ticketNumber": "<ticket-num>"
}
У меня есть это в моем сервлете в Intellij.
import com.google.gson.*;
import com.google.*;
import org.apache.*;
import org.apache.http.*;
@WebServlet(name = "Logincheck", urlPatterns = {"/Logincheck"})
public class Servlet extends HttpServlet {
String teamID = "IC106-2";
String teamKey = "1b3741ccf6d9ec5245055370125d901e";
String url="http://fys.securidoc.nl:11111/Ticket";
int Min = 1;
int Max = 100;
int REQ_ID = Min + (int)(Math.random() *((Max - Min)+1));
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//index.html form user input
String fname = request.getParameter("firstName");
String lastName = request.getParameter("lname");
String ticketNummer = request.getParameter("ticketnr");
JsonParser parser = new JsonParser();
URL object=new URL(url);
String ticketCheck = "{\"function:\"Check\",\"teamId\":\"IC106-2\",\"teamKey\":\"1b3741ccf6d9ec5245055370125d901e\",\"requestId\":\""+REQ_ID+"\",\"firstName\":\""+fname+"\",\"lastName\":\""+lastName+"\",\"ticketNumber\":\""+ticketNummer+"\"}";
HttpURLConnection con = (HttpURLConnection) object.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
con.setRequestMethod("POST");
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
writer.write(ticketCheck);
writer.flush();
StringBuilder sb = new StringBuilder();
String jsonResponseString = sb.toString();
JsonElement jsonTree = parser.parse(jsonResponseString);
int HttpResult = con.getResponseCode();
if (HttpResult == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
System.out.println("" + sb.toString());
} else {
System.out.println(con.getResponseMessage());
}
}
Теперь, когда я нажимаю «Выполнить», он открывает мой index.html, и когда я нажимаю кнопку входа в систему / Logincheck, он отвечает (в пределах intellij):
Bad Request
Teamkey и TeamID верны на 100%, но я, вероятно, упускаю из виду то, что связано с Json. У меня минимальный опыт работы с Json и сервлетами в целом. Например, я ввожу жестко запрограммированные учетные данные для входа в систему и тикет, или ввод пользователя уже правильный? Я должен ожидать этот ответ:
{
"ticketStatus": "<ticket-status>",
"requestId": "<request-id>",
"result": "<result-code>",
"resultText": "<result-text>"
}