Send HTTPS Post Request to the server

后端 未结 2 1530
离开以前
离开以前 2020-12-13 02:59

This is my HTTP JSON

 {  
 \"User\": {    
    \"Name\": \"Compulsary\",\"Password\": \"Compulsary\"  }
}

Which I have to post to the serve

2条回答
  •  孤街浪徒
    2020-12-13 03:48

    Step 1: Create a class MySSLSocketFactory and include below code:

    public class MySSLSocketFactory extends SSLSocketFactory {
        SSLContext sslContext = SSLContext.getInstance("TLS");
    
        public MySSLSocketFactory(KeyStore truststore)
                        throws NoSuchAlgorithmException, KeyManagementException,
                        KeyStoreException, UnrecoverableKeyException {
                super(truststore);
    
                TrustManager tm = new X509TrustManager() {
                        public void checkClientTrusted(X509Certificate[] chain,
                                        String authType) throws CertificateException {
                        }
    
                        public void checkServerTrusted(X509Certificate[] chain,
                                        String authType) throws CertificateException {
                        }
    
                        public X509Certificate[] getAcceptedIssuers() {
                                return null;
                        }
                };
    
                sslContext.init(null, new TrustManager[] { tm }, null);
        }
    
        @Override
        public Socket createSocket(Socket socket, String host, int port,
                        boolean autoClose) throws IOException, UnknownHostException {
                return sslContext.getSocketFactory().createSocket(socket, host, port,
                                autoClose);
        }
    
        @Override
        public Socket createSocket() throws IOException {
                return sslContext.getSocketFactory().createSocket();
        }
    
    }
    

    Step 2: Create a class WebClientDevWrapper and include the below code:

    public class WebClientDevWrapper {
    
        public static HttpClient getNewHttpClient() {
             try {
                 KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
                 trustStore.load(null, null);
    
                 SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
                 sf.setHostnameVerifier(
                        SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    
                 HttpParams params = new BasicHttpParams();
                 HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
                 HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
    
                 SchemeRegistry registry = new SchemeRegistry();
                 registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
                 registry.register(new Scheme("https", sf, 443));
    
                 ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
    
                 return new DefaultHttpClient(ccm, params);
             } catch (Exception e) {
                 return new DefaultHttpClient();
             }
         }
    
    }
    

    Step 3: Create a method inside your Activity or elsewhere, this method is going to be used for making a web call.

    /**
         * Request JSON based web service to get response
         * 
         * @param url
         *            - base URL
         * @param request
         *            - JSON request
         * @return response
         * @throws ClientProtocolException
         * @throws IOException
         * @throws IllegalStateException
         * @throws JSONException
         */
        public HttpResponse request(String url, JSONObject request)
                throws ClientProtocolException, IOException, IllegalStateException,
                JSONException {
    
            DefaultHttpClient client = (DefaultHttpClient) WebClientDevWrapper.getNewHttpClient();
    
                HttpPost post = new HttpPost(url);
                post.setEntity(new StringEntity(request.toString(), "utf-8"));
                HttpResponse response = client.execute(post);
                return response;
            }
        }
    

    Step 4: Call a method and get response.

提交回复
热议问题