Http istemcisi aracılığıyla QuickPay hizmetine ("https://secure.quickpay.dk/form") erişmesi gereken bir Android uygulaması geliştiriyorum. Ancak sayfaya erişirken hata yapmaya devam ediyorum. Daha spesifik olarak bir "Hayır Eş Sertifika" hata mesajı alıyorum. Zaten birkaç farklı şey denedim: Kök sertifikayı anahtar depomuma eklemeyi ve bu anahtar deposunu bağlarken, aşağıdaki yordamı izleyerek kullanmaya çalıştım: adding certificate to keystore. Ayrıca, önerilen yöntemi takip ederek tüm sertifikaları kabul etmeyi denedim: accepting certificate for android. Diğer https sitelerine başarıyla bağlandım, ancak buna bağlanamıyorum. Farklı Android cihazlarda denedim (1.6, 2.2 ve 2.3.3). Herkes hızlı ödeme sitesine bağlanmayı başarabilir mi, yoksa olası bir çözümle ilgili herhangi bir çözüm bulabilir mi?Android'deki bu HTTPS sitesine bağlanırken "Akran sertifikası yok" hatası almayı nasıl önleyebilirim?
// Güncelleme: Bu siteye WebView'imle erişirseniz: payment window examples ve düğmelerden birine (önceden tanımlanmış bazı değişkenlerle temelde sadece bir http yayınını başlatır) basıyorum. Android 2.3.3 webview. Ayrıca, Android 3.1'de yukarıdaki uygulamayı başlatmaya çalışırsam siteden bir yanıt aldığımı öğrendim! Baska öneri?
public class MyHttpClient extends DefaultHttpClient {
final Context context;
public MyHttpClient(Context context) {
this.context = context;
loadHttps();
}
private void loadHttps() {
String url = "https://secure.quickpay.dk/form";
HttpPost httpPost = new HttpPost(url);
try {
System.out.println("Executing");
this.execute(httpPost);
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
} catch (ClientProtocolException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e);
}
}
@Override
protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", newSslSocketFactory(), 443));
return new SingleClientConnManager(getParams(), registry);
}
private SSLSocketFactory newSslSocketFactory() {
try {
KeyStore trusted = KeyStore.getInstance("BKS");
InputStream in = context.getResources().openRawResource(R.raw.test);
try {
trusted.load(in, "mysecret".toCharArray());
} finally {
in.close();
}
SSLSocketFactory sf = new SSLSocketFactory(trusted);
return sf;
} catch (Exception e) {
throw new AssertionError(e);
}
}
}
StackTrace:
WARN/System.err(8459) at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java 258)
WARN/System.err(8459) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java 93)
WARN/System.err(8459) at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java 381)
WARN/System.err(8459) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java 177)
WARN/System.err(8459) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java 164)
WARN/System.err(8459) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java 119)
WARN/System.err(8459) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java 359)
WARN/System.err(8459) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java 555)
WARN/System.err(8459) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java 487)
WARN/System.err(8459) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java 465)
WARN/System.err(8459) at test.https.MyHttpClient.loadHttps(MyHttpClient.java 34)
WARN/System.err(8459) at test.https.MyHttpClient.<init>(MyHttpClient.java 26)
WARN/System.err(8459) at test.https.HttpsTesterActivity.onCreate(HttpsTesterActivity.java 60)
WARN/System.err(8459) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java 1047)
WARN/System.err(8459) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java 1615)
WARN/System.err(8459) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java 1667)
WARN/System.err(8459) at android.app.ActivityThread.access$1500(ActivityThread.java 117)
WARN/System.err(8459) at android.app.ActivityThread$H.handleMessage(ActivityThread.java 935)
WARN/System.err(8459) at android.os.Handler.dispatchMessage(Handler.java 99)
WARN/System.err(8459) at android.os.Looper.loop(Looper.java 123)
WARN/System.err(8459) at android.app.ActivityThread.main(ActivityThread.java 3687)
WARN/System.err(8459) at java.lang.reflect.Method.invokeNative(Native Method)
WARN/System.err(8459) at java.lang.reflect.Method.invoke(Method.java 507)
WARN/System.err(8459) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java 842)
WARN/System.err(8459) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java 600)
Sertifika genel site sertifikası aldığınız bir sertifika mıdır, yoksa bu QuickPay'den aldığınız kişisel (veya şirket) bir sertifika mıdır? Hangi format? PKX? p12? –
Lütfen iletinin tamamını ve yığın izlemesini gönderin. – EJP
@PeterKnego, Kök sertifikayı tarayıcımdan QuickPay'in sitesinden indirdim. Sertifika Equifax tarafından verilmiştir. Daha sonra, Android'e yüklemek için sertifikayı bir p12 sertifikasına dönüştürdüm. –