2012-07-16 8 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この1つはうまく見えますが、最後のステップで著者を失います。「元の残りのクライアントコードに戻る」彼もあちこちにいる、私は彼が使用している図書館の手がかりがない。彼は彼のコードを説明していません。

RestTemplate restTemplate = new RestTemplate(); 

もう一つのクリフハンガーです。そのクラスは提供されていないためです。したがって、誰かがHTTPS投稿要求をどのようにして詳細に説明することができれば、それは素晴らしいものになるでしょう。自己署名証明書を受け入れる必要があります。

答えて

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とそれを使用しています。

乾杯!

EDIT

と私は私のコードで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 Postに使用した方法で、ここで私はカスタム証明書を使用していますので、自分自身でHttpPost割り当てを変更してください..."私はHTTPSポストではなくHTTPSで作業する必要があります。大きな違い。 –

+0

申し訳ありませんが私の間違いHTTPS、それはHTTPSで働いています...それを試してください... –

+0

それを試してみてください..... –

関連する問題