小编fir*_*ear的帖子

HttpURLConnection在Android 2.x中运行良好但在4.1中没有运行:没有发现身份验证挑战

我有一些典型的代码使用HttpURLConnection来获取带有URL的文件.他们在android 1.x和2.x中运行良好.但在Android 4.1中失败了!

我在网上搜索但发现的信息很少.有人请帮忙调查这个问题吗?

private String mURLStr; 
private HttpURLConnection mHttpConnection;

...

url = new URL(mURLStr);

...

mHttpConnection = (HttpURLConnection) url.openConnection();
mHttpConnection.setDoOutput(true);
mHttpConnection.setRequestMethod("GET");

...

InputStream is = mHttpConnection.getInputStream();
Run Code Online (Sandbox Code Playgroud)

getInputStream方法抛出异常:

08-01 15:56:48.856: W/System.err(13613): java.io.IOException: No authentication challenges found
08-01 15:56:48.856: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.getAuthorizationCredentials(HttpURLConnectionImpl.java:427)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:407)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:356)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
...
Run Code Online (Sandbox Code Playgroud)

authentication android httpurlconnection

30
推荐指数
3
解决办法
2万
查看次数

如果部署了有效证书,iOS AFNetwork SSL固定模式是否会提供额外的安全奖励

根据我的理解,SSL Pinning是预先将服务器的公钥或认证与客户端中捆绑的副本进行比较.

我在Stackoverflow中看到许多开发人员使用AFNetwork库的SSL Pinning,但他们中的大多数都使用它和自签名证书.

我从CA购买了有效的证书并通过了测试以验证它是否正常工作.我的意思是,我设置以下内容并且有效

    ...
    _sharedHttpsInstance.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    _sharedHttpsInstance.securityPolicy.allowInvalidCertificates = NO;
    ...
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果将Pinning模式设置为AFSSLPinningModePulicKey,除了有效证书提供的内容之外,我的应用程序在与服务器的通信方面会更安全吗?

非常感谢.

security ssl https pinning ios

5
推荐指数
1
解决办法
1507
查看次数

在Android build.gradle中将versionName定义为ext变量的正确方法是什么?

我尝试将versionName定义为要在我的gradle配置文件app/build.gradle中使用的ext变量.

ext {
    versionCode = 19
    versionName = "1.2.3"
    ...
}
...
android {
    ...
    defaultConfig {
        ...
        versionCode versionCode
        versionName versionName
    }
    ...
}
...
task updateReleaseMetadata(type:Exec) {
    commandLine 'sh'
    args "MyShellScript.sh", versionName
}
...
Run Code Online (Sandbox Code Playgroud)

看起来工作得很好.但是我的android代码无法检索versionName,如下所示

PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
return pi.versionName;  // return null
Run Code Online (Sandbox Code Playgroud)

我想我没有以正确的方式使用gradle.任何帮助都会得到满足.

android task gradle build.gradle

3
推荐指数
1
解决办法
3511
查看次数