ksoap2访问方式 new Thread(new Runnable() {
@Override
public void run() {
String namespace = "http://tempuri.org/";//namespace
String methodName = "getTelFrom";//要调用的方法名称 用于确定手机归属地
SoapObject request = new SoapObject("http://tempuri.org/", "getTelFrom");
request.addProperty("param", "whxs|0000000031072121|64d51414511721c1417495|64a5b4744167|121");//参数
request.addProperty("value", "18636956898");//手机号
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER11);
envelope.bodyOut = request;
envelope.dotNet = true;
HttpsTransportSE httpTransportSE = new HttpsTransportSE("webservice4.vcyber.cn", 443, "/MemberService/UserInfoService.asmx", 15000);
SslRequest.allowAllSSL();//无需证书
try {
httpTransportSE.call(namespace+methodName, envelope);
SoapObject response = (SoapObject) envelope.getResponse();//获得返回对象
if(response!=null){
Log.e("WM", response.toString());
Log.e("WM", response.getName());
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
}).start();SslRequest.java
new Thread(new Runnable() {
@Override
public void run() {
String namespace = "http://tempuri.org/";//namespace
String methodName = "getTelFrom";//要调用的方法名称 用于确定手机归属地
SoapObject request = new SoapObject("http://tempuri.org/", "getTelFrom");
request.addProperty("param", "whxs|0000000031072121|64d51414511721c1417495|64a5b4744167|121");//参数
request.addProperty("value", "18636956898");//手机号
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER11);
envelope.bodyOut = request;
envelope.dotNet = true;
HttpsTransportSE httpTransportSE = new HttpsTransportSE("webservice4.vcyber.cn", 443, "/MemberService/UserInfoService.asmx", 15000);
SslRequest.allowAllSSL();//无需证书
try {
httpTransportSE.call(namespace+methodName, envelope);
SoapObject response = (SoapObject) envelope.getResponse();//获得返回对象
if(response!=null){
Log.e("WM", response.toString());
Log.e("WM", response.getName());
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
}
}).start(); package com.qxc.ksoap;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class SslRequest implements X509TrustManager {
private static TrustManager[] trustManagers;
private static final X509Certificate[] _AcceptedIssuers = new
X509Certificate[]{};
@Override
public void checkClientTrusted(X509Certificate[] chain, String
authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String
authType) throws CertificateException {
}
public boolean isClientTrusted(X509Certificate[] chain) {
return true;
}
public boolean isServerTrusted(X509Certificate[] chain) {
return true;
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return _AcceptedIssuers;
}
public static void allowAllSSL() {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
SSLContext context = null;
if (trustManagers == null) {
trustManagers = new TrustManager[]{new SslRequest()};
}
try {
context = SSLContext.getInstance("TLS");
context.init(null, trustManagers, new SecureRandom());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
// HttpsURLConnection.setDefaultSSLSocketFactory(new MySSLSocketFactory(context.getSocketFactory()));
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
}
}
Okhttp访问
new Thread(new Runnable() {
@Override
public void run() {
// OkHttpClient okHttpClient = null;
// try {
//// trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
//// trustManagerFactory.init((KeyStore) null);
//// TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
//// if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
//// throw new IllegalStateException("Unexpected default trust managers:"
//// + Arrays.toString(trustManagers));
//// }
//// X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
// TrustManager[] trustManagers=null;
// if (trustManagers == null) {
// trustManagers = new TrustManager[]{new SslRequest()};
// }
// SSLContext sslContext = SSLContext.getInstance("TLS");
// sslContext.init(null, trustManagers , new SecureRandom());
// SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
// okHttpClient = new OkHttpClient.Builder()
// .sslSocketFactory(sslSocketFactory, (SslRequest)trustManagers[0]).build();
// } catch (NoSuchAlgorithmException e) {
// e.printStackTrace();
// } catch (KeyManagementException e) {
// e.printStackTrace();
// }
// TrustManagerFactory trustManagerFactory = null;
// try {
// trustManagerFactory = TrustManagerFactory.getInstance(
// TrustManagerFactory.getDefaultAlgorithm());
// trustManagerFactory.init((KeyStore) null);
// TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
// if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
// throw new IllegalStateException("Unexpected default trust managers:"
// + Arrays.toString(trustManagers));
// }
// X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
//
// SSLContext sslContext = SSLContext.getInstance("TLS");
// sslContext.init(null, new TrustManager[] { trustManager }, null);
// SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
//
// okHttpClient = new OkHttpClient.Builder()
// .sslSocketFactory(sslSocketFactory, trustManager).build();
// } catch (NoSuchAlgorithmException e) {
// e.printStackTrace();
// } catch (KeyStoreException e) {
// e.printStackTrace();
// } catch (KeyManagementException e) {
// e.printStackTrace();
// }
OkHttpClient okHttpClient = new OkHttpClient();
HashMap<String, String> hashMap = new HashMap<>();
// hashMap.put("User-Agent", "kSOAP/2.0");
// hashMap.put("SOAPAction", "http://tempuri.org/getTelFrom");
// hashMap.put("Host", "webservice4.vcyber.cn");
Headers headers = Headers.of(hashMap);
// RequestBody requestBody = new FormBody.Builder().build();
// RequestBody requestBody = RequestBody.create(MediaType.parse("text/xml"), "<v:Envelope xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\" xmlns:c=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:v=\"http://schemas.xmlsoap.org/soap/envelope/\"><v:Header /><v:Body><getTelFrom xmlns=\"http://tempuri.org/\" id=\"o0\" c:root=\"1\"><param i:type=\"d:string\">whxs|0000000031072121|64d51414511721c1417495|64a5b4744167|121</param><value i:type=\"d:string\">18636956898</value></getTelFrom></v:Body></v:Envelope>");
// Request request = new Request.Builder().headers(headers).url("https://webservice4.vcyber.cn/MemberService/UserInfoService.asmx").post(requestBody).build();
Request request = new Request.Builder().url("https://kyfw.12306.cn/otn/").build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e("WM", "" + e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.e("WM", response.body().string());
}
});
}
}).start();
本文介绍了如何使用ksoap2和Okhttp库在Android中进行HTTPS调用WebService。通过示例代码展示了如何设置请求参数、信任所有SSL证书,并获取响应数据。
1万+

被折叠的 条评论
为什么被折叠?



