2015-10-05 20 views
5

Używam java do tworzenia aplikacji na komputer, a ta aplikacja korzysta z interfejsu API. Aby zabezpieczyć komunikację z interfejsem API, zostałem poinformowany o ich wsparciu dla używania protokołu HTTPS. Proszę wskazać mi, jak skonfigurować połączenie https z klienta java.konfiguracja połączenia HTTP z aplikacji Java

API ma tej funkcji, w którym stwierdza się, że może wybrać bezpieczne połączenie:

private String getUrlAddress(XmlRequest request) { 
    // determine if this is a secure connection 
    String url = this.ssl ? "https://" : "http://"; 

    // determine service endpoint based on type of class/request passed in 
    if(request.getClass() == MessageRequest.class) { 
     url += ClockWorkSmsService.SMS_URL; 
    } 
    else { 
     url += ClockWorkSmsService.CREDIT_URL; 
    } 

    return url; 
} 

ten kod daje mi pomysł, że „żądanie” będzie mój aktualny adres URL lub serwera, więc będzie mi na moja strona, która skonfiguruje połączenie https.

Clockworksms API Wrapper:

import com.clockworksms.*; 

public class DemoSms 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
     ClockWorkSmsService clockWorkSmsService = new ClockWorkSmsService("apikey"); 
     SMS sms = new SMS("441234567890", "Hello World");   
     ClockworkSmsResult result = clockWorkSmsService.send(sms); 

     if(result.isSuccess()) 
     { 
      System.out.println("Sent with ID: " + result.getId()); 
     } 
     else 
     { 
      System.out.println("Error: " + result.getErrorMessage()); 
     } 
     } 
     catch (ClockworkException e) 
     { 
     e.printStackTrace(); 
     } 
    } 
} 
+0

Można uzyskać pewne wyobrażenie stąd [http://stackoverflow.com/ pytania/4722644/web-service-client-with-java-application-and-ssl] również obejrzałem na [http://www.javaworld.com/article/2077600/learn-java/java-tip-96-- użyj-https-in-your-java-client-code.html] – Vishal

+0

Musisz wysłać żądanie do bezpiecznego interfejsu API https. dobrze? – John

+0

@John Tak, chcę, aby istniało bezpieczne połączenie między tymi dwoma, i powiedziano mi, że https jest sposobem, aby to się stało – magicianiam

Odpowiedz

2

Jeśli jest to bezpieczne REST API. Jeśli potrzebujesz tylko dostępu do zasobu HTTP, musisz przejrzeć bibliotekę here .

Istnieją setki zasobów tam, spróbuj, a następnie opublikuj konkretne pytania.

+0

dziękuję za to, przeczytam to teraz, będzie dobrze, jeśli zadaję ci kilka pytań, kiedy czuję się zablokowany? – magicianiam

+0

Przeczytałem [link] (http://www.bhaveshthaker.com/24/calling-invoking-secure-restful-web-service-over-https-w-jax-rs-in-java-without-keystore-truststore -information /), a tak naprawdę nie w pełni to rozumiał, choć z tego, co mogę uzyskać, to jest ustalenie go jako połączenia https, a następnie w tej części, w jaki sposób łączy się on z moim API lub jak połączyć go z moim API i czy interfejs API będzie automatycznie wiedział, że połączenie jest już bezpieczne? dzięki – magicianiam

+1

jest oparte na API REST? – John

0

Faktycznie musimy nadpisać domyślne zachowanie istniejących i pozwalają dodać wszystkie jako zaufane serwery, Poniżej fragment kodu pomoże Ci:

/* START of the fix*/ 
    TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { 
     public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } 
     public void checkClientTrusted(X509Certificate[] certs, String authType) { } 
     public void checkServerTrusted(X509Certificate[] certs, String authType) { } 

    } }; 

    SSLContext sc = SSLContext.getInstance("SSL"); 
    sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 

    // Create all-trusting host name verifier 
    HostnameVerifier allHostsValid = new HostnameVerifier() { 
     public boolean verify(String hostname, SSLSession session) { return true; } 
    }; 
    // Install the all-trusting host verifier 
    HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); 
    /* End of the fix*/