Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中使用HTTPS和共享IP主机_Android_Ssl_Sni - Fatal编程技术网

如何在Android中使用HTTPS和共享IP主机

如何在Android中使用HTTPS和共享IP主机,android,ssl,sni,Android,Ssl,Sni,我需要的是:通过HTTPS连接获取JSON结果 我拥有的:具有有效SSL证书的共享服务器 我想要的是:能够建立HTTPS连接,但我不能,因为当我用我找到的在线示例更改我的代码时,它永远不会工作 详情: 我已经寻找了好几天的解决方案,但我发现了许多不同的东西,并且已经在我的代码中尝试了许多不同的组合,但没有任何效果( 我习惯于用PHP、MySQL、CSS和HTML进行开发,但直到最近我才开始使用Android(java),我从来没有开发过任何东西(甚至没有“Hello world!”) 我想要一个

我需要的是:通过HTTPS连接获取JSON结果

我拥有的:具有有效SSL证书的共享服务器

我想要的是:能够建立HTTPS连接,但我不能,因为当我用我找到的在线示例更改我的代码时,它永远不会工作

详情:

我已经寻找了好几天的解决方案,但我发现了许多不同的东西,并且已经在我的代码中尝试了许多不同的组合,但没有任何效果(

我习惯于用PHP、MySQL、CSS和HTML进行开发,但直到最近我才开始使用Android(java),我从来没有开发过任何东西(甚至没有“Hello world!”)

我想要一个简单的应用程序,我雇了一个自由职业者(实际上是一个优秀的印度佬……我觉得自己在这方面很走运)。 因此,我最近为我的网站购买了一个SSL/TLS证书,它位于一个共享服务器上,我想更改我应用程序上的代码,以便能够通过HTTPS进行连接,并使之成为我用PHP开发的Web服务的安全连接

HTTP请求的所有功能都可以完美运行,但当我尝试在网上找到的一些不同的HTTPS建议时,一切都不起作用(

永远都无法得出结论。哈哈

以下是我在大约30个不同屏幕中的代码:

    package com.appname.othername;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import com.actionbarsherlock.app.SherlockFragment;
import com.andreabaccega.widget.FormEditText;
import com.appname.R;
import com.appname.R.id;
import com.appname.R.layout;
import com.appname.Visiter.NewJobRequestFragment.SenderTask;
import com.appname.utility.ConnectionDetector;
import com.appname.utility.JsonHandler;
import com.appname.utility.ServiceHandler;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

public class CallmeFragment extends SherlockFragment {

    public static final String serverURL = "http://WEBSITE.COM/WEBSERVICE_FILE.PHP";
    public static final String TAG_RESULT = "result";
    public static final String TAG_ERROR_STATUS = "error";
    public static final String TAG_ERROR_MSG = "message";
    private FormEditText firstname;
    private FormEditText email;
    private FormEditText phone;

    private ProgressDialog progressDialog;
    private ArrayList<NameValuePair> nameValuePair;
    public String httpresponce;
    public JSONObject result;
    public String error_status;
    public String error_msg;
    private boolean isInternetPresent;
    private ConnectionDetector cd;

    public CallmeFragment(){}

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
         progressDialog = new ProgressDialog(getActivity());
         progressDialog.setMessage("Please wait...");
         progressDialog.setCancelable(false);

         cd = new ConnectionDetector(getActivity());
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_callme, container, false);
         firstname = (FormEditText)rootView.findViewById(R.id.editText1);
         email = (FormEditText)rootView.findViewById(R.id.editText2);
         phone = (FormEditText)rootView.findViewById(R.id.editText3);
         phone.addTextChangedListener(new TextWatcher() {

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                final int length = phone.getText().length();
                 phone.setOnKeyListener(new OnKeyListener() {
                        @Override
                        public boolean onKey(View v, int keyCode, KeyEvent event) {

                            if (length  ==3 || length ==7 && keyCode != KeyEvent.KEYCODE_DEL)
                            {
                                 phone.setText(phone.getText() + " ");
                                phone.setSelection(phone.getText().length());
                            }
                            return false;
                        }
                    });
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub

            }

         });
         Button submit_button = (Button)rootView.findViewById(R.id.button1);
         submit_button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                ValidateForms();
                // TODO Auto-generated method stub

            }
        });
        return rootView;
    }

    protected void ValidateForms() {
        // TODO Auto-generated method stub
        FormEditText[] allFields    = {firstname,email,phone};


        boolean allValid = true;
        for (FormEditText field: allFields) {
            allValid = field.testValidity() && allValid;
        }

        if (allValid) {
          SendMail();
        } else {
            // EditText are going to appear with an exclamation mark and an explicative message.
        }
    }

    private void SendMail() {
         nameValuePair = new ArrayList<NameValuePair>(8);
           nameValuePair.add(new BasicNameValuePair("name",firstname.getText().toString()));
           nameValuePair.add(new BasicNameValuePair("contact",phone.getText().toString()));
           nameValuePair.add(new BasicNameValuePair("email",email.getText().toString()));
           isInternetPresent = cd.isConnectingToInternet();
           if (isInternetPresent) {
                   new SenderTask().execute();
           }
           else
           {
               Toast.makeText(getActivity(),"Internet connection failed", Toast.LENGTH_SHORT).show();
           }
    }
    class SenderTask extends AsyncTask<String, Void, Void> {

        @Override
        protected void onPreExecute() {
            progressDialog.show();
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(String... params) {
    ServiceHandler sh = new ServiceHandler();

            // Making a request to url and getting response
              httpresponce = sh.makeServiceCall(serverURL , JsonHandler.POST,nameValuePair);
              if (httpresponce != null) {
                    try {
                        JSONObject jsonObj = new JSONObject(httpresponce);

                        // Getting JSON Array node
                        result = jsonObj.getJSONObject(TAG_RESULT);
                          error_status  = result.getString(TAG_ERROR_STATUS);
                         error_msg = result.getString(TAG_ERROR_MSG);

                    } catch (JSONException e) {
                        e.printStackTrace();

                    }

                    }
            Log.i("Responce", "= "+httpresponce);
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            progressDialog.dismiss();
            showAlert();
            super.onPostExecute(result);
        }
    }
    public void showAlert() {
        // TODO Auto-generated method stub
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                getActivity());

            // set title
            alertDialogBuilder.setTitle("Message");

            // set dialog message
            alertDialogBuilder
                .setMessage(error_msg)
                .setCancelable(true)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                //do things
           }
       });  // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();

                // show it
                alertDialog.show();
    }

}
package com.appname.othername;
导入java.util.ArrayList;
导入org.apache.http.NameValuePair;
导入org.apache.http.message.BasicNameValuePair;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.actionbarsherlock.app.SherlockFragment;
导入com.andreabaccega.widget.FormEditText;
导入com.appname.R;
导入com.appname.R.id;
导入com.appname.R.layout;
导入com.appname.Visiter.NewJobRequestFragment.SenderTask;
导入com.appname.utility.ConnectionDetector;
导入com.appname.utility.JsonHandler;
导入com.appname.utility.ServiceHandler;
导入android.app.AlertDialog;
导入android.app.ProgressDialog;
导入android.content.DialogInterface;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.Log;
导入android.view.KeyEvent;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnKeyListener;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.Toast;
公共类CallmeFragment扩展了SherlockFragment{
公共静态最终字符串serverURL=”http://WEBSITE.COM/WEBSERVICE_FILE.PHP";
公共静态最终字符串标记_RESULT=“RESULT”;
公共静态最终字符串标记\u ERROR\u STATUS=“ERROR”;
公共静态最终字符串标记\u错误\u MSG=“消息”;
私有FormEditText名字;
私人文本电子邮件;
专用文本电话;
私有进程对话;
私有ArrayList nameValuePair;
公共字符串httpresponse;
公共JSONObject结果;
公共字符串错误\u状态;
公共字符串错误\u msg;
私有布尔值存在;
专用连接检测器cd;
公共CallmeFragment(){}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
progressDialog=新建progressDialog(getActivity());
progressDialog.setMessage(“请稍候…”);
progressDialog.setCancelable(假);
cd=新的ConnectionDetector(getActivity());
super.onActivityCreated(savedInstanceState);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u callme,container,false);
firstname=(FormEditText)rootView.findviewbyd(R.id.editText1);
email=(FormEditText)rootView.findviewbyd(R.id.editText2);
phone=(FormEditText)rootView.findviewbyd(R.id.editText3);
phone.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
//TODO自动生成的方法存根
}
@凌驾
public void onTextChanged(字符序列,int start,int before,
整数计数){
final int length=phone.getText().length();
setOnKeyListener(新的OnKeyListener(){
@凌驾
公共布尔onKey(视图v、int keyCode、KeyEvent事件){
如果(长度==3 | |长度==7&&keyCode!=KeyEvent.keyCode_DEL)
{
phone.setText(phone.getText()+);
phone.setSelection(phone.getText().length());
}
返回false;
}
});
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
//TODO自动生成的方法存根
}
});
按钮提交按钮=(按钮)rootView.findviewbyd(R.id.button1);
submit_button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
ValidateForms();
//TODO自动生成的方法存根
}
});
返回rootView;
}
受保护的void ValidateForms(){
//TODO自动生成的方法存根
FormEditText[]所有字段={firstname,email,phone};
布尔值allValid=true;
for(FormEditText字段:所有字段){
allValid=field.testValidity()&&allValid;
}
如果(全部有效){
SendMail();
}否则{
//EditText将显示一个感叹号和一条解释性消息。
}
}
私有void SendMail(){
名称值对
10-05 22:40:21.673: W/System.err(10007): javax.net.ssl.SSLException: hostname in certificate didn't match: <maif.pt> != <www.infor5.pt> OR <www.infor5.pt> OR <infor5.pt>
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:185)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:54)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:114)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:95)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:214)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:167)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.impl.client.DefaultRequestDirector.executeOriginal(DefaultRequestDirector.java:1227)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:677)
10-05 22:40:21.673: W/System.err(10007):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:567)
10-05 22:40:21.683: W/System.err(10007):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:491)
10-05 22:40:21.683: W/System.err(10007):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:469)
10-05 22:40:21.683: W/System.err(10007):    at com.maif.utility.ServiceHandler.makeServiceCall(ServiceHandler.java:83)
10-05 22:40:21.683: W/System.err(10007):    at com.maif.Visiter.jobrequests.JobsListLoader.loadInBackground(JobsListLoader.java:86)
10-05 22:40:21.683: W/System.err(10007):    at com.maif.Visiter.jobrequests.JobsListLoader.loadInBackground(JobsListLoader.java:1)
10-05 22:40:21.683: W/System.err(10007):    at android.support.v4.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:242)
10-05 22:40:21.683: W/System.err(10007):    at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:51)
10-05 22:40:21.683: W/System.err(10007):    at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:40)
10-05 22:40:21.683: W/System.err(10007):    at android.support.v4.content.ModernAsyncTask$2.call(ModernAsyncTask.java:123)
10-05 22:40:21.683: W/System.err(10007):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-05 22:40:21.683: W/System.err(10007):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-05 22:40:21.683: W/System.err(10007):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-05 22:40:21.683: W/System.err(10007):    at java.lang.Thread.run(Thread.java:841)