Нужно доверять всем сертификатам по потреблению API, чтобы получить токен носителя в .NET FrameworkJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Нужно доверять всем сертификатам по потреблению API, чтобы получить токен носителя в .NET Framework

Сообщение Anonymous »

Я разрабатываю код в C# с использованием .NET Framework 4.7.2, где мне нужно потреблять API, чтобы получить токен для носителя. Но я получаю исключение - базовое соединение закрыто: невозможно подключиться к удаленному серверу.
ниже приведен мой код (я добавил фиктивную конечную точку и учетные данные) < /p>
public class Program
{
static async Task Main(string[] args)
{
// Accept all SSL certificates (for testing purposes only)
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(AcceptAllCertifications);

// Enable TLS protocols
ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls12;

string url = "https://example/auth/token?grant_type=c ... redentials";
string userId = "dummy";
string password = "dummypwd";

// Disable proxy
WebRequest.DefaultWebProxy = null;

var handler = new HttpClientHandler
{
UseProxy = false,
Proxy = null
};

using (var client = new HttpClient(handler))
{
string userCredentials = $"{userId}:{password}";
string basicAuth = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(userCredentials));

var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Headers.Add("Authorization", basicAuth);
// Optionally set Content-Type and content if required by the API
// request.Content = new StringContent("", Encoding.UTF8, "application/x-www-form-urlencoded");

try
{
var response = await client.SendAsync(request); //
Я получаю исключение в строке:
var response = await client.sendasync (запрос); < /p>
Обратите внимание, что я попытался использовать почтальона с теми же заголовками и учетными данными, и я получаю правильный ответ. Код Java выглядит следующим образом: < /p>
private SSLContext makeSslEnable() {
try {
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[0];
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
return sc;
} catch (Exception ex) {
log.info("Error configuring SSL for local test", ex);
return null;
}
}

public void sendPostRequest(String urlVals, String userId, String password) {
HttpsURLConnection conn = null;
BufferedReader in = null;
try {
URL url = new URL(urlVals);
conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");

String userCredentials = userId + ":" + password;
String basicAuth = "Basic " + Base64.getEncoder().encodeToString(userCredentials.getBytes());
conn.setRequestProperty("Authorization", basicAuth);

SSLContext sslcontext = makeSslEnable();
if (sslcontext != null) {
conn.setSSLSocketFactory(sslcontext.getSocketFactory());
}

in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();

while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}

int statusCode = conn.getResponseCode();
String jsonContent = content.toString();

// Handle the response
} catch (Exception ex) {
log.info("Error during POST request", ex);
} finally {
try {
if (in != null) in.close();
if (conn != null) conn.disconnect();
} catch (Exception e) {
// Cleanup
}
}
}
< /code>
Я добавил заголовки и фрагмент кода от почты также я попытался добавить код servicepointmanager.servercertificatevalidationCallback = new RemoteCertificateValidationCallback (AcceptAllCertifications); Но получить исключение.
Я ожидал получить ответ от API, когда все проверки сертификатов обходится.

Подробнее здесь: https://stackoverflow.com/questions/796 ... n-in-net-f
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»