Android wczytywanie zdjęć z lokalnego serwera przez picasso

0

Cześć, pisze do was, bo nie mam już pomysłu co może być nie tak mam aplikacje backendowa napisana w springu, gdzie mam tabele image,która trzyma link do zdjecia np https://localhost/api/images/downloadFile/aerobics.jpg ten link zwraca mi w przegladarce plik i zapsuje go w pobranych, tak jak domyslnie przegladarka ma, natomiast w androidzie

Picasso.get().load("https://localhost/api/images/downloadFile/aerobics.jpg")
                .fit()
                .centerCrop()
                .into(findOutPictureImageGame)

wykonując taki kod nic sie nie dzieje dopiero jak wrzuce zdjecie na jakis hosting i podmienie url na ten co hosting generuje dziala, nawet sprawdzalem na osobnym komputerze podlączonym do tej samej sieci wpisujac https://192.168.1.24/api/images/downloadFile/aerobics.jpg dziala mam dostęp do tych plików.Nie wiem co jest grane

2

Jak myślisz, czym jest localhost dla telefonu? I czemu na drugim komputerze musisz podać adres IP a nie localhost?

0

zamiast localhost mowisz ze mam podac adres ip i to powinno pomóc tak ?

0

Niekoniecznie musi działać (powinno), bo zależy od innych rzeczy, ale będzie krokiem w dobrą stronę.

0

Zmienilem z localhost na adres ip no i tez nie dziala kurde co moze byc nie tak, udostepnic cos wiecej kod controllera albo service'u

0

Chyba ze to moze byc wina przez https bo mam self-signed certificate ale mam w androidzie Okhttp

object OkhttpClient {

    lateinit var jwtToken : Token

    fun setToken(tok : Token)
        {
            this.jwtToken = tok
        }

    fun getUnsafeOkHttpClient(): OkHttpClient {
        // Create a trust manager that does not validate certificate chains
        val trustAllCerts = arrayOf<TrustManager>(object : X509TrustManager {
            override fun checkClientTrusted(chain: Array<out X509Certificate>?, authType: String?) {
            }

            override fun checkServerTrusted(chain: Array<out X509Certificate>?, authType: String?) {
            }

            override fun getAcceptedIssuers() = arrayOf<X509Certificate>()
        })

        // Install the all-trusting trust manager
        val sslContext = SSLContext.getInstance("SSL")
        sslContext.init(null, trustAllCerts, java.security.SecureRandom())
        // Create an ssl socket factory with our all-trusting manager
        val sslSocketFactory = sslContext.socketFactory

        return OkHttpClient.Builder()
                .sslSocketFactory(sslSocketFactory, trustAllCerts[0] as X509TrustManager)
                .hostnameVerifier { _, _ -> true }.build()
    }
}

metode ktora nie waliduje certyfikatow w ogóle i retrofit


object RetrofitClient {
    const val BASE_URL = "https://192.168.1.24/api/"

    private var jwtToken:String? = null

     val retrofit: Retrofit? = Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(JacksonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .client(OkhttpClient.getUnsafeOkHttpClient())
            .build()
}
0
  1. Wyslij zdjecia na serwer i zmien linki w bazie.

Albo

  1. Smartphone oraz musza byc w tej samej sieci oraz andkek musi gadac przez ip a nie localhosta. Ten serwer daje tez resta dla smartphona, dziala to? Jaki tam endpoint / url jest?
0

Czy ustawiasz tego klienta HTTP w Picasso?

I dużo prościej by było pewnie, gdybys włączył logi w Picasso albo dodał je do OkHttp (na przykład tak albo tak).

0

co masz na myśli bo jestem początkujący, czy chodzi ci o metode .downloader(new OkHttp3Downloader(client)) jesli tak to nie nie mam ustawionej

2

Tak, o to mi chodzi.

No to musisz ustawić klienta ze skonfigurowaną fabryką SSL, żeby Picasso też mógł go wykorzystać. I potem korzystać z instancji Picasso, która ma tego klienta.

0

Postaram sie to zrobic jak najszybciej zrobic jakby nadal cos by nie dzialalo to napisze, Dzięki wielkie na razie za pomoc, sporo nad tym siedzalem.

 fun getPiccassoInstance(context: Context, okhttp :OkhttpClient): Picasso {
       return  Picasso.Builder(context)
                .downloader(OkHttp3Downloader(okhttp.getUnsafeOkHttpClient()))
                .build()
    }

Dzięki wielkie @Michał Sikora skonfigurowałem to SSL i Picasso i działa ładnie.Wielkie dzięki jeszcze raz. Temat to zamknięcia

1 użytkowników online, w tym zalogowanych: 0, gości: 1