如何在android中发布到HTTPS站点

时间:2017-05-03 12:52:54

标签: android https

我是Android编程新手,因为我已经获得了一个辅助项目。 我有这个网页https://travelads.katakwe.co.za/androidlogin 它有一个用户名和密码字段,我想用它来登录我的Android应用程序 所以我有两个问题:
1)可以完成 2)我该怎么做

我发现了以下问题:

我遇到的所有这些问题是他们没有解释他们实施的所有方法,我不知道如何将其应用到我自己的网页

URL url =new URL("https://travelads.katakwe.co.za/androidlogin");

        HttpsURLConnection connection= (HttpsURLConnection) url.openConnection();
        String urlParameters="sn=C02G8416DRJM&cn=&locale=&caller=&num=12345";
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Username","name");
        connection.setRequestProperty("Password","pass");

        connection.setDoOutput(true);
        DataOutputStream dStream =new DataOutputStream(connection.getOutputStream());

        dStream.writeBytes(urlParameters);
        dStream.flush();
        dStream.close();

        int responseCode=connection.getResponseCode();
        ret=responseCode;

1 个答案:

答案 0 :(得分:1)

我已经为HTTPS服务器的所有POST / PUT / GET请求编写了一个函数

一个。您必须处理自签名证书。请确保包含该内容。

湾您必须告诉要将哪种类型的内容类型发送到服务器。

℃。取决于服务器配置。在处理Android请求之前,有什么要求您通过POSTMAN或curl命令向服务器发送检查以验证是否正常工作。

public String createConnection (String urlS, String methodInvoked,String patchBody, String postBody,String putBody){
        URL url ;
        BufferedReader br = null;
        String toBeReturned="";
        try {
            url = new URL(urlS);

            HostnameVerifier hostnameVerifier = new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            };
            TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {
                        public X509Certificate[] getAcceptedIssuers() {
                            X509Certificate[] myTrustedAnchors = new X509Certificate[0];
                            return myTrustedAnchors;
                        }
                        @Override
                        public void checkClientTrusted(X509Certificate[] certs, String authType) {
                        }
                        @Override
                        public void checkServerTrusted(X509Certificate[] certs, String authType) {
                        }
                    }
            };

            // Create an SSLContext that uses our TrustManager
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, null);


            HttpsURLConnection  connection = (HttpsURLConnection) url.openConnection();
            connection.setConnectTimeout(60000);
            HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
            connection.setSSLSocketFactory(sc.getSocketFactory());
            connection.setHostnameVerifier(hostnameVerifier);


            if (patchBody  != null ){
                Log.i(TAG, " createConnection with PATH with body" );
                connection.setRequestMethod("PATCH");
                connection.setRequestProperty("data",patchBody);
                connection.addRequestProperty("Content-Type", "application/json");
                DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
                dStream.writeBytes(patchBody);
                dStream.flush();
                dStream.close();
            }
            if (methodInvoked.equalsIgnoreCase("PATCH") && patchBody == null ){
                Log.i(TAG, " createConnection with PATH without body" );
                connection.setRequestMethod("PATCH");
//              connection.addRequestProperty("Content-Type", "application/json");
//              connection.setDoOutput(true);
            }
            if (postBody != null){
                Log.i(TAG, " createConnection with POST with body" );
                connection.setRequestMethod("POST");
                connection.addRequestProperty("Content-Type", "application/json");
                connection.setDoOutput(true);
                DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
                dStream.writeBytes(postBody);
                dStream.flush();
                dStream.close();
            }

            if (methodInvoked.equalsIgnoreCase("POST") && postBody == null ){
                Log.i(TAG, " createConnection with POST without body" );
                connection.setRequestMethod("POST");
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
                //connection.addRequestProperty("Content-Type", "application/json");
            }

            if (putBody != null){
                Log.i(TAG, " createConnection with PUT with body" );
                connection.setRequestMethod("PUT");
                connection.setDoOutput(true);
                connection.addRequestProperty("Content-Type", "application/json");
                DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
                dStream.writeBytes(putBody);
                dStream.flush();
                dStream.close();
            }



            responseCode = connection.getResponseCode();
            InputStream in= null;
            if(responseCode >= HttpsURLConnection.HTTP_BAD_REQUEST)
            {   

                in = connection.getErrorStream();
                br = new BufferedReader( new InputStreamReader(connection.getErrorStream()));
                StringBuilder sb = new StringBuilder();
                String line = null; 
                while ((line = br.readLine()) != null) {
                    sb.append(line+"\n");
                }
                 String toBeReturned_1 = sb.toString();
                 Log.i(TAG, " createConnetion error received " +  responseCode  + "  " + toBeReturned_1) ;

            }
            else{


                br = new BufferedReader( new InputStreamReader(connection.getInputStream()));
                StringBuilder sb = new StringBuilder();
                String line = null; 
                while ((line = br.readLine()) != null) {
                    sb.append(line+"\n");
                }
                toBeReturned = sb.toString();


            }


        } catch (MalformedURLException e) {
            error = e.getMessage();
            e.printStackTrace();
        } catch (IOException e) {
            error = e.getMessage();
            e.printStackTrace();
        } catch (KeyManagementException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            try {
                if (br!=null)
                    br.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        Log.i(TAG, " createConnetion  finally returned" +  toBeReturned );
        return toBeReturned; 
    }