8

以下のリンクを見てきましたが、具体的なことは何もありません。 AndroidでのセキュアHTTPポスト これはもう機能しません。私はそれをテストしましたが、他の人からは機能しないというコメントがあります。

私もこれをチェックしました:DefaultHttpClient、Certificates、Https、および投稿の問題!これはうまくいくようですが、ブロガーはあなたをぶら下げたままにします。より多くのステップバイステップの説明が役立つでしょう。彼の2番目のステップを実行できなかったため、証明書を取得できました。

http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.htmlこれは良さそうですが、最後のステップで作成者を失います。「元のRESTクライアントコードに戻る。」彼もいたるところにいます。彼がどのライブラリを使用しているかはわかりません。彼は自分のコードを説明しておらず、

RestTemplate restTemplate = new RestTemplate();

それは別のクリフハンガーです。そのクラスが提供されていないためです。したがって、誰かがHTTPS POSTリクエストを行う方法を詳細に説明できれば、それは素晴らしいことです。自己署名証明書を受け入れる必要があります。

4

2 に答える 2

12

お役に立てば幸いです。これは私が使用したコードであり、完全に正常に機能しました。

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を使用しませんでした。簡単なPOSTリクエストを行いました。さらにサポートが必要な場合は、お知らせください。私は最近あなたが探しているものと同じようなことをしたようです。

于 2012-07-16T12:58:58.067 に答える
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();
    }
于 2012-07-16T12:42:28.307 に答える