У меня есть клиент Jersey, который получает токен jwt из API.
Это код
public static final String INFO_ENDPOINT = "http://10.1.9.10:7100/Info/";
private static final String INFO_USERNAME = "user";
private static final String INFO_PASSWORD = "password";
private static final String AUTH_PATH = "auth";
private String token;
private final Client client;
public JerseyClient() {
ClientConfig cc = new DefaultClientConfig();
cc.getClasses().add(MultiPartWriter.class);
client = Client.create(cc);
}
public void authenticate() {
try {
WebResource resource = client.resource(INFO_ENDPOINT + AUTH_PATH);
StringBuilder sb = new StringBuilder();
sb.append("{\"username\":\"" + INFO_USERNAME + "\",");
sb.append("\"password\":\"" + INFO_PASSWORD + "\"}");
ClientResponse clientResp = resource.type("application/json")
.post(ClientResponse.class, sb.toString());
String content = clientResp.getEntity(String.class);
System.out.println("Response:" + content);
token = content.substring(content.indexOf("\"token\":") + 9,
content.lastIndexOf("\""));
System.out.println("token " + token);
} catch (ClientHandlerException | UniformInterfaceException e) {
}
}
Приведенный выше код возвращает токен jwt, который затем используется в качестве ключа для другого вызова.
Я пытаюсь преобразовать его в HttpUrlConnection. Но это не похоже на работу
Это то, что я пробовал. Это не выдает ошибку, но также не возвращает токен. Ответ пуст
try {
URL url = new URL("http://10.1.9.10:7100/Info/auth");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("accept", "application/json");
String input = "{\"username\":user,\"password\":\"password\"}";
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (IOException e) {
}
Моя проблема в том, что я не могу перевести .post(ClientResponse.class, sb.toString())
в HttpUrlConnection.
Что мне не хватает или что я делаю не так?
Спасибо