2015-10-05 10 views
5

Bir masaüstü uygulaması oluşturmak için java kullanıyorum ve bu uygulama bir API kullanıyor. API ile iletişimi sağlamak için, HTTPS kullanma desteklerinden haberdar oldum. Lütfen bir java istemcisinden bir https bağlantısı kurma konusunda bana rehberlik edin.Java Uygulaması'ndan Https bağlantısı nasıl kurulur

API bunun güvenli bir bağlantı seçebilir belirten bu işlevi vardır:

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; 
} 

bu kod bana "istek" benim şimdiki url veya sunucu olacağı fikir verir, bu yüzden bana olacak https bağlantısını kuracak tarafım.

Clockworksms API Sarıcı:

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

buradan bir fikir [http://stackoverflow.com/ alabilirsiniz sorular/4722644/web-hizmet-istemci-ile-java-uygulama-ve-ssl] de [http://www.javaworld.com/article/2077600/learn-java/java-tip-96-- https-in-your-java-client-code.html kullanın] – Vishal

+0

Güvenli bir https API'sine istekte bulunmanız gerekir. sağ? – John

+0

@John evet Orada ikisi arasında güvenli bir bağlantı olmasını istiyorum ve bu https bu yolu – magicianiam

cevap

2

güvenli bir REST API buysa. Bir göz atın. here

Sadece erişmeniz gereken bir HTTP kaynağıysa, Apache HTTPClient kitaplığına ve tutorials adasına bakın.

Orada yüzlerce kaynak var, lütfen deneyin ve sonra özel sorular gönderin.

+0

bu konuda teşekkür ederim, şimdi okuyacağım, sıkışıp kaldığımda size bazı sorular sorarsam sorun olur mu? – magicianiam

+0

[link] 'i okuyun (http://www.bhaveshthaker.com/24/calling-invoking-secure-restful-web-service-over-https-with-jax-rs-in-java-without-keystore-truststore -formasyon /), ve gerçekte tam olarak anlayamadım, ne yapabilirim ki, o kendini bir https bağlantısı olarak kuruyor, o zaman bu bölüm benim API'ma nasıl bağlanıyor ya da onu nasıl bağlarım? API ve API otomatik olarak bağlantının zaten güvenli olduğunu bilir mi? Teşekkürler – magicianiam

+1

API REST tabanlı mı? – John

0

Aslında biz kod parçacığı size yardımcı olacaktır Aşağıda, varsayılan davranışı varolan geçersiz kılmak ve tüm olarak güvenilen sunucuları izin eklemek gerekir:

/* 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*/