gpt4 book ai didi

android - 如何从 Android 应用程序使用 HTTPS rest 服务

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:43 25 4
gpt4 key购买 nike

我对 Android 应用程序开发非常陌生。我正在开发一个演示项目,我正在尝试将我的 android 应用程序用作在 C#.net 上创建的 WCF REST 服务的客户端。该服务已经托管在 Internet 服务器上,并且工作正常,因为我在我的其他 .Net Web 应用程序(作为客户端)中使用相同的服务。但是,当我尝试从我的 Android 应用程序访问相同的 REST 服务(返回一个 JSON 对象)时,它会抛出以下异常。

“java.io.IOException: SSL handshake failure: Failure in SSL library, 通常是协议(protocol)错误错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol)(外部/openssl/ssl/s23_clnt.c:585 0xaf586674:0x00000000)”

以下是我用来连接服务的代码。

final String url = "https://mywebsite.com/service/myservice.svc/userid/" + usrid + "/" + password + "/authenticate";

Uri uri = Uri.parse(url);
HttpClient httpclient = new DefaultHttpClient();
HttpHost host = new HttpHost(uri.getHost(), 443, uri.getScheme());
HttpPost httppost = new HttpPost(uri.getPath());
try {
HttpResponse response = httpclient.execute(host, httppost); // Throwing exception on this line
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
String result= convertStreamToString(instream);
JSONArray nameArray=json.names();
JSONArray valArray=json.toJSONArray(nameArray);
for(int i=0;i<valArray.length();i++)
{
nameArray.getString(i);
}
instream.close();
}


} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

我是否需要使用自己的 TrustManager 创建 SSLContext 以忽略 SSL 证书错误,请确认。如果是,能否请您也提供代码示例。

最佳答案

您提到的代码将在真实设备中运行。您提出的问题是由您的 PC 中的防火墙阻止 443 端口引起的。

尝试禁用您的防火墙并在模拟器中尝试您的应用程序。我相信它会奏效。

关于android - 如何从 Android 应用程序使用 HTTPS rest 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9601288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com