Я пытаюсь получить токен oauth с помощью http-клиента, но это приводит к HTTP / 1.1 401 Несанкционированная ошибка .Первоначально я попытался использовать запрос curl следующим образом, и это был успех.(здесь исходные значения параметров не показаны в целях безопасности)
curl --request POST --url oauthtokenHttpsurl --header 'content-type: application/json' --data '{"client_id":"clientId","client_secret":"client_secret","audience":"audienceurl","grant_type":"credentials"}'
Затем я попытался реализовать то же самое в Java, используя apache httpclient, как показано ниже, но это дает 401 Несанкционированную ошибку
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
public class TestOAuthPost {
public static void main(String[] args) {
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
HttpPost httppost = new HttpPost("oauthtokenHttpsurl");
JsonObject jsonObj = new JsonObject();
jsonObj.addProperty("grant_type", "credentials");
jsonObj.addProperty("audience", "audienceurl");
jsonObj.addProperty("client_id", "client_id");
jsonObj.addProperty("client_secret", "client_secret");
StringEntity se = new StringEntity(jsonObj.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httppost.setEntity(se);
// Execute HTTP Post Request
HttpResponse response = httpClient.execute(httppost);
String result = IOUtils.toString(response.getEntity().getContent(), StandardCharsets.UTF_8);
// 401 Unauthorized error
} catch (IOException e) {
System.out.println("erss");
}
}
}
Я впервые работаю с библиотекой httpclient и в oauth.
Может кто-нибудь дать несколько советов.