2017-01-18 2 views
1

Мне нужно подключиться к API через https, но ему нужна авторизация.
У меня есть имя пользователя и пароль для него, но я понятия не имею, как перенести его на https.Как разрешить запрос HTTPS с помощью java?

Код я пытался использовать следующий код (который получил от другого SO поста):

public class TestHTTPSRequest { 
public static void main(String[] args) throws Exception { 
    URLConnection connection = new URL("https://smartcat.ai/api/integration/v1/account").openConnection(); 

    InputStream is = connection.getInputStream(); 
    InputStreamReader reader = new InputStreamReader(is); 
    char[] buffer = new char[256]; 
    int rc; 

    StringBuilder sb = new StringBuilder(); 

    while ((rc = reader.read(buffer)) != -1) 
     sb.append(buffer, 0, rc); 

    reader.close(); 

    System.out.println(sb); 
} 
} 
+1

[это] (http://stackoverflow.com/questions/3283234/http-basic-authentication-in-java-using-httpclient) может помочь вам. –

+0

Прочитайте документацию по API, который вы пытаетесь использовать. Это должно объяснить, как предоставить информацию авторизации. (Нет решения, которое будет работать для всех API ...) –

+0

Танков много. Запрос технической поддержки документов. Вы очень помогли, поскольку я думал, что это должно быть чем-то универсальным. –

ответ

0

Пожалуйста, попробуйте использовать HTTPClient. Вы можете легко подключиться к https-адресам.

Кроме того, если это обеспеченный URL Вы должны были бы некоторые заголовки безопасности они могут быть

1> Authentication-маркер или любые другие лексемы

2> Вы можете нужны некоторые другие лексемы ради CSRF защита

Пожалуйста, изучить документацию по API ссылка

0

Jack Джея помог. Следующий метод работы для меня хорошо:

public static void main(String[] args) { 

    try { 
     URL url = new URL ("https://.../......"); 
     String encoding = Base64.getEncoder().encodeToString(("login:password").getBytes()); 

     HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); 
     connection.setRequestMethod("GET"); 
     connection.setDoOutput(true); 
     connection.setRequestProperty ("Authorization", "Basic " + encoding); 
     InputStream content = (InputStream)connection.getInputStream(); 
     BufferedReader in = 
       new BufferedReader (new InputStreamReader (content)); 
     String line; 
     while ((line = in.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 

} 
Смежные вопросы