【发布时间】:2011-09-04 13:51:51
【问题描述】:
我目前正在为我的组织网站开发我的第一个 android 应用和第一个 api。我正在尝试使用安全连接从 android 应用程序连接到 api。我们的网站在 8090 上有一个测试端口,我试图用它来测试 api 但我遇到的问题是我在网站上有一个自签名证书,从我在线阅读的内容来看,android 应用程序没有'不喜欢。为了确保 api 没有问题,我将它与 http 而不是 https 连接一起使用,并且效果很好。我已经尝试了一些我在网上找到的解决方案,包括来自这个网站的一些解决方案,但似乎没有一个有效。同样,我在为 Android 开发方面没有太多经验,所以我的很多尝试只是从我在网上找到的解决方案中复制和粘贴。以下是我尝试过的一些链接:
http://yekmer.posterous.com/how-to-accept-self-signed-certificates-in-and
我现在找不到其他页面的链接,但下面是我目前用来连接的代码:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://website.edu:8090/api.php?");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("method", "login"));
nameValuePairs.add(new BasicNameValuePair("user", username.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("pass", md5(password.getText().toString())));
nameValuePairs.add(new BasicNameValuePair("submitLogin", "1"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
HttpParams params = httppost.getParams();
HttpConnectionParams.setConnectionTimeout(params, 45000);
HttpConnectionParams.setSoTimeout(params, 45000);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我还想补充一点,购买证书不是一种选择,因为我们没有预算可以使用,所以任何可以解决自签名证书问题的东西都会很棒。提前致谢!
【问题讨论】:
标签: java android post https certificate