我正在查看来自网址http://arabian-chemistry.com/wp-content/uploads/2018/02/إدارة-التغير.png的图片 这是我获取图像的代码
RequestQueue mQueue = newRequestQueue(context);
ImageLoader imageLoader = new ImageLoader(mQueue, new ImageLoader.ImageCache() {
@Override
public Bitmap getBitmap(String url) {
return null;
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
}
});
img.setImageUrl(url, imageLoader);
以上代码在棒棒糖设备上工作正常且更高但是它不会加载到kitkat和旧版本的android上并在日志中出现此错误
02-21 14:49:42.072 28684-29279/com.alpha25.wordpressapp E/Volley: [6654] BasicNetwork.performRequest: Unexpected response code 301 for http://arabian-chemistry.com/wp-content/uploads/2018/02/إدارة-التغير.png
我认为这个问题是因为SSLHandshakeException所以我搜索了一个解决方案,但我不知道如何使用我的代码 这是我找到的代码
SSLContext sslContext = null;
try {
sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, null, null);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
SSLSocketFactory noSSLv3Factory = null;
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
try {
noSSLv3Factory = new NoSSLv3SocketFactory(sslContext.getSocketFactory());
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
} else {
noSSLv3Factory = sslContext.getSocketFactory();
}
OkHttpClient.Builder okb = new OkHttpClient.Builder()
.sslSocketFactory(noSSLv3Factory, provideX509TrustManager());
OkHttpClient ok = okb.build();
请提出任何纠正此事的建议
答案 0 :(得分:0)
试试这个网址
https://arabian-chemistry.com/wp-content/uploads/2018/02/إدارة-التغير.png
或者如果您不想使用此解决方案,您可以使用滑动或毕加索来加载他们在内部处理此图像的图像。
希望这会对你有所帮助。
答案 1 :(得分:0)
尝试glide这是一个简单的库,用于从互联网上获取图片到您的观点。
使用示例:
// For a simple view:
@Override public void onCreate(Bundle savedInstanceState) {
...
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
GlideApp.with(this).load("http://YOURDOMAIN.COM").into(imageView);
}
// For a simple image list:
@Override public View getView(int position, View recycled, ViewGroup container) {
final ImageView myImageView;
if (recycled == null) {
myImageView = (ImageView) inflater.inflate(R.layout.my_image_view, container, false);
} else {
myImageView = (ImageView) recycled;
}
String url = myUrls.get(position);
GlideApp
.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);
return myImageView;
}
答案 2 :(得分:0)
你是否尝试加载没有阿拉伯语后者的图像? 此外301表示服务器正在向您发送,因此您可以指定引用URL和用户代理,欺骗自己作为浏览器
答案 3 :(得分:0)
第一条建议:使用另一个支持followRedirection
的库
但是如果你坚持使用Volley在onError
函数
@Override
public void deliverError(final VolleyError error) {
Log.d(TAG, "deliverError");
final int status = error.networkResponse.statusCode;
// Handle 30x
if(HttpURLConnection.HTTP_MOVED_PERM == status || status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_SEE_OTHER) {
final String location = error.networkResponse.headers.get("Location");
Log.d(TAG, "Location: " + location);
final GsonRequest<T> request = new GsonRequest<T>(method, location, jsonRequest, this.requestContentType, this.clazz, this.ttl, this.listener, this.errorListener);
// Construct a request clone and change the url to redirect location.
RequestManager.getRequestQueue().add(request);
}
}
此代码遵循使用301
响应代码重定向的请求。请求