2015-10-05 8 views
5

मैं डेस्कटॉप एप्लिकेशन बनाने के लिए जावा का उपयोग कर रहा हूं, और यह एप्लिकेशन एपीआई का उपयोग करता है। एपीआई के साथ संचार को सुरक्षित करने के लिए, मुझे एचटीटीपीएस का उपयोग करने के लिए उनके समर्थन से सूचित किया गया था। कृपया जावा क्लाइंट से https कनेक्शन सेट अप करने के तरीके पर मुझे मार्गदर्शन करें।जावा एप्लिकेशन से एक एचटीपीएस कनेक्शन कैसे सेट करें

एपीआई इस समारोह जिसमें कहा गया है कि यह एक सुरक्षित कनेक्शन चुन सकते हैं कि है:

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

इस कोड को मुझे यह विचार है कि "अनुरोध" मेरे वर्तमान यूआरएल या सर्वर हो जाएगा देता है, तो यह मेरे पर होगा मेरी तरफ से https कनेक्शन स्थापित होगा।

Clockworksms एपीआई आवरण:

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

आप यहाँ से कुछ विचार [http://stackoverflow.com/ मिल सकता है प्रश्न/4722644/वेब-सेवा-क्लाइंट-साथ-जावा-एप्लिकेशन-एंड-एसएसएल] ने भी देखा है [http://www.javaworld.com/article/2077600/learn-java/java-tip-96-- उपयोग-https-in-your-java-client-code.html] – Vishal

+0

आपको एक सुरक्षित https API से अनुरोध करने की आवश्यकता है। सही? – John

+0

@ जॉन हाँ, मैं चाहता हूं कि दोनों के बीच एक सुरक्षित कनेक्शन हो, और मुझे बताया गया कि https – magicianiam

उत्तर

2

यदि यह एक सुरक्षित REST API का है। यदि यह महज एक HTTP संसाधन है कि आप तो उपयोग करने के लिए Apache HTTPClient पुस्तकालय पर एक नजर है की जरूरत है और यह tutorials है एक नज़र here

है।

वहां सैकड़ों संसाधन हैं, कृपया प्रयास करें और फिर विशिष्ट प्रश्न पोस्ट करें।

+0

इसके लिए धन्यवाद, मैं इसे अभी पढ़ूंगा, क्या यह ठीक रहेगा अगर मैं आपको कुछ प्रश्न पूछूं तो मुझे अटक जाए? – magicianiam

+0

मैंने पढ़ा [लिंक] (http://www.bhaveshthaker.com/24/calling-invoking-secure-restful-web-service-over-https-with-jax-rs-in-java-without-keystore-truststore - सूचना /), और सचमुच इसे पूरी तरह से समझ में नहीं आया, हालांकि मुझे जो मिल सकता है वह यह है कि, यह इसे एक https कनेक्शन के रूप में स्थापित कर रहा है, फिर उस भाग पर यह मेरे एपीआई से कैसे जुड़ता है या मैं इसे अपने साथ कैसे जोड़ूं एपीआई, और एपीआई स्वचालित रूप से पता चलेगा कि कनेक्शन पहले से ही सुरक्षित है? धन्यवाद – magicianiam

+1

एपीआई आरईएसटी आधारित है? – John

0

असल में हम मौजूदा डिफ़ॉल्ट व्यवहार को ओवरराइड और सभी के रूप में भरोसेमंद सर्वर की अनुमति देते हैं जोड़ने की जरूरत है, नीचे दिए गए कोड स्निपेट तुम्हारी मदद करेगा:

/* 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*/ 
संबंधित मुद्दे