Я пытаюсь использовать AsyncHttpClient для выполнения запроса JSON. Я попытался использовать несколько реализаций, включая setBody и addBodyPart и многие другие. Результат всегда один и тот же.
Он должен отправить строку, подобную этой, преобразованную в байты:
{
"template": "c=KZ;o=Template;cn=GOST_RAUTIL_USER_1Y;",
"useHSM": "true",
"altAttrs": {
"altDN": [
"CN=Test org1, SERIALNUMBER=1111111111",
"CN=Test org2, SERIALNUMBER=2222222222"
]
},
"keyName": "XkjCPFLfvJCUYktH",
"dn": "C=KZ, O=TEST, CN= XkjCPFLfvJCUYktH",
"internalHSMkey": "true"
}
Но как-то он конвертирует запрос в такой:
.. ip
address .. POST заголовки: Content-Type: application / json Авторизация: Базовая
SWdvcjpHYW1tYTIwMTk =
Итак, сервер получает неправильный запрос и отвечает сообщением об ошибке:
Текст JSONObject должен начинаться с '{' в 0 [символ 1, строка 1] json:
Вот одна из моих реализаций кода:
Request request = new RequestBuilder(POST)
.setUrl(apiUrl)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Basic " + DatatypeConverter.printBase64Binary(userPassword.getBytes()))
.setBody(jsonObject.toString().getBytes())
.build();
asyncHttpClient.executeRequest(request, new AsyncCompletionHandlerBase() {
@Override
public void onThrowable(Throwable t) {
}
@Override
public org.asynchttpclient.Response onCompleted(org.asynchttpclient.Response response) throws Exception {
System.out.println("COMPLETED");
return super.onCompleted(response);
}
});