Я пытаюсь создать приложение Android, в котором я звоню на сервер HTTPS. Я знаю, как вызвать HTTP, но я не могу назвать HTTPS-сервер. Мой код показан ниже:Как я могу назвать веб-службу мыла HTTPS в Android
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
Spinner spinner;
Button send;
EditText number, comments;
String dropdown;
TextView feedbackText;
private static final String[] paths = {"About Test Center", "About Mobile App"};
final private static String URL = "https://122.180.25.2/TempWS/WebServices/WebService1.asmx";
final private static String METHOD_NAME = "RegisterComplaint";
final private static String NAMESPACE = "https://122.180.25.2/";
final private static String SOAP_ACTION = "https://122.180.25.2/RegisterComplaint";
@Override
protected void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("Feedback");
send = (Button) findViewById(R.id.button7);
number = (EditText) findViewById(R.id.editText);
comments = (EditText) findViewById(R.id.editText2);
feedbackText = (TextView) findViewById(R.id.textView2);
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item, paths);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncFeedback().execute();
}
});
}
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
switch (position) {
case 0:
dropdown = "About Test Center";
break;
case 1:
dropdown = "About Mobile App";
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
public class AsyncFeedback extends AsyncTask<Void, Void, String> {
String resp;
String Number = number.getText().toString();
String Comments = comments.getText().toString();
@Override
protected String doInBackground(Void... params) {
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//request.addProperty("topic",dropdown);
request.addProperty("sender", Number);
request.addProperty("topic", dropdown);
request.addProperty("CompDetails", Comments);
//request.addProperty("details",Comments);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
try {
HttpTransportSE transportSE = new HttpTransportSE(URL);
transportSE.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
resp = result.toString();
} catch (SocketTimeoutException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
return resp;
}
public void onPostExecute(String result) {
dropdown = null;
number.setText("");
comments.setText("");
feedbackText.setText(result);
}
}
}
LogCat показано ниже:
Click here to view the image of logcat
Любая помощь будет оценена. Я хочу, чтобы этот код работал (как звонить HTTPS). Спасибо!!
Вам нужно знать SSLCertificate, если он меняется один раз в то время, иначе вы можете обойти его с помощью X509TrustManager и SSLContext, чтобы доверять всем сертификатам. – Mike
@Mike Как я могу это сделать? Я новичок в этом. – Nair123
Подождите, я могу поделиться с вами своим ответом, но это что-то сделано с REST not SOAP – Mike