2012-07-16 15 views
8

मैंने निम्न लिंक देखे हैं, लेकिन कुछ भी ठोस नहीं लगता है। Secure HTTP Post in Android यह अब और काम नहीं करता है, मैंने इसका परीक्षण किया है और अन्य लोगों से टिप्पणियां हैं कि यह काम नहीं करती है।Android में HTTPS पोस्ट कैसे करें

मैंने यह भी चेक आउट किया: DefaultHttpClient, Certificates, Https and posting problem! ऐसा लगता है कि यह काम कर सकता है लेकिन ब्लॉगर बस आपको लटका देता है। कदम से अधिक कदम निर्देश उपयोगी होंगे। मैं अपना प्रमाण पत्र प्राप्त करने में कामयाब रहा हूं, मैं अपने दूसरे चरण के माध्यम से पालन करने में सक्षम नहीं हूं।

http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html यह एक अच्छा प्रतीत होता है, लेकिन फिर से, मैंने अंतिम चरण में लेखक को खोला: "हमारे मूल आराम क्लाइंट कोड पर वापस जाएं।" वह भी पूरी जगह पर है, मेरे पास कोई संकेत नहीं है कि वह कौन सी पुस्तकालयों का उपयोग कर रहा है। वह अपना कोड नहीं समझा रहा है और

RestTemplate restTemplate = new RestTemplate(); 

यह एक और क्लिफेंजर है। क्योंकि वह वर्ग प्रदान नहीं किया गया है। इसलिए, अगर कोई यह बता सकता है कि एचटीटीपीएस पोस्ट अनुरोध को विस्तार से कैसे किया जाए तो यह बहुत अच्छा होगा। मुझे स्वयं हस्ताक्षरित प्रमाणपत्र स्वीकार करने की आवश्यकता है।

उत्तर

11

मुझे आशा है कि यह मदद मिलेगी है। यह वह कोड है जिसका मैंने उपयोग किया और पूरी तरह से ठीक काम किया।

private HttpClient createHttpClient() 
{ 
    HttpParams params = new BasicHttpParams(); 
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
    HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET); 
    HttpProtocolParams.setUseExpectContinue(params, true); 

    SchemeRegistry schReg = new SchemeRegistry(); 
    schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
    schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
    ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg); 

    return new DefaultHttpClient(conMgr, params); 
} 

फिर इस तरह की एक HttpClient बनाने: -

HttpClient httpClient = createHttpClient(); 

और HttpPost साथ उपयोग करें।

चीयर्स !!

संपादित

और मैं अपने कोड में RestTemplate इस्तेमाल किया नहीं था। मैंने एक साधारण पोस्ट अनुरोध किया। अगर आपको और मदद चाहिए तो मुझे बताएं। ऐसा लगता है कि मैंने हाल ही में कुछ ऐसा किया है जो आप खोज रहे हैं।

0

इस विधि मैं HTTPS पोस्ट के लिए इस्तेमाल किया और यहाँ मैं कस्टम प्रमाणपत्र का इस्तेमाल किया, तो बदल तुम्हारा साथ HttpClient असाइनमेंट के मालिक हैं ...

public String postData(String url, String xmlQuery) { 



     final String urlStr = url; 
     final String xmlStr = xmlQuery; 
     final StringBuilder sb = new StringBuilder(); 



     Thread t1 = new Thread(new Runnable() { 

      public void run() { 

       HttpClient httpclient = MySSLSocketFactory.getNewHttpClient(); 

       HttpPost httppost = new HttpPost(urlStr); 


       try { 

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
          1); 
        nameValuePairs.add(new BasicNameValuePair("xml", xmlStr)); 

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        HttpResponse response = httpclient.execute(httppost); 

        Log.d("Vivek", response.toString()); 

        HttpEntity entity = response.getEntity(); 
        InputStream i = entity.getContent(); 

        Log.d("Vivek", i.toString()); 
        InputStreamReader isr = new InputStreamReader(i); 

        BufferedReader br = new BufferedReader(isr); 

        String s = null; 


        while ((s = br.readLine()) != null) { 

         Log.d("YumZing", s); 
         sb.append(s); 
        } 


        Log.d("Check Now",sb+""); 




       } catch (ClientProtocolException e) { 

        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } /* 
       * catch (ParserConfigurationException e) { // TODO 
       * Auto-generated catch block e.printStackTrace(); } catch 
       * (SAXException e) { // TODO Auto-generated catch block 
       * e.printStackTrace(); } 
       */ 
      } 

     }); 

     t1.start(); 
     try { 
      t1.join(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


     System.out.println("Getting from Post Data Method "+sb.toString()); 

     return sb.toString(); 
    } 
+0

"यह तरीका है जिसे मैंने HTTP पोस्ट के लिए उपयोग किया था और यहां मैंने कस्टम सर्टिफिकेट का उपयोग किया था, इसलिए एचटीटीपीओएस असाइनमेंट को अपने आप से बदलें ..." मुझे एचटीटीपीएस पोस्ट के साथ http पोस्ट नहीं करना है। बड़ा अंतर। –

+0

क्षमा करें मेरी गलती HTTPS, यह HTTPS के साथ काम करता है ... इसे आजमाएं .. –

+0

इसे आज़माएं, यह काम करेगा ..... –

संबंधित मुद्दे