Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用htaccess改装呼叫_Android_.htaccess_Kotlin_Retrofit2_Logcat - Fatal编程技术网

Android 使用htaccess改装呼叫

Android 使用htaccess改装呼叫,android,.htaccess,kotlin,retrofit2,logcat,Android,.htaccess,Kotlin,Retrofit2,Logcat,在我的应用程序中,我使用了一个api,它的生产服务器是开放的,但它的开发服务器受htaccess登录的保护 我需要测试api的开发服务器中的一些东西,但无法绕过htaccess墙 我想我可以把它放在URL中,就像你在诸如“”之类的浏览器中所做的那样,我意识到这会造成一些暴露的凭证问题,但我可以想出一些解决方法 但是没有骰子。我得到了401个未经授权的错误,然后当我点击我得到401个未经授权错误的链接时,它在我的浏览器中完美地加载了api的json 有没有办法绕过改造2中的htaccess?下面是

在我的应用程序中,我使用了一个api,它的生产服务器是开放的,但它的开发服务器受htaccess登录的保护

我需要测试api的开发服务器中的一些东西,但无法绕过htaccess墙

我想我可以把它放在URL中,就像你在诸如“”之类的浏览器中所做的那样,我意识到这会造成一些暴露的凭证问题,但我可以想出一些解决方法

但是没有骰子。我得到了401个未经授权的错误,然后当我点击我得到401个未经授权错误的链接时,它在我的浏览器中完美地加载了api的json

有没有办法绕过改造2中的htaccess?下面是我的代码,其中凭证和变量当然不清楚

我的改装界面:

public interface DevApi {
    @POST("api/{data0}/{data1}/{data2}")
    fun getMoviesByCategory(@Path("data0") data0: String, @Path("data1") data1: Int, @Path("data2") data2: Int): Single<ArrayList<KMovie>>
}
class KMovieInteractorImpl : KMovieInteractor {

  @Inject
  lateinit var testAPI: DevApi

  init {
    DaggerMovieInteractorComponent.create().inject(this)
  }

  override fun getGenreMovies(data0: String, data1: Int, data2: Int): Single<ArrayList<KMovie>> {
    return testAPI.getMoviesByCategory(data0, data1, data2).subscribeOn(Schedulers.io())
  }
}
2020-04-13 16:56:33.839 11675-11935/com.myapp D/OkHttp: --> POST https://user:password@dev.api.biz/api/data0/data1/data2
2020-04-13 16:56:33.841 11675-11937/com.myapp D/OkHttp: --> POST user:password@dev.api.biz/api/data00/data1/data2
2020-04-13 16:56:34.153 11675-11937/com.myapp D/OkHttp: <-- 401 Unauthorized user:password@dev.api.biz/api/data0/data1/data2(312ms)
2020-04-13 16:56:34.157 11675-11937/com.myapp D/OkHttp: <address>Apache/2.4.29 (Ubuntu) Server at dev.api.biz Port 443</address>
2020-04-13 16:56:34.178 11675-11935/com.myapp D/OkHttp: <-- 401 Unauthorized https://user:password@dev.api.biz/api/data00/data1/data2 (337ms)
公共接口{
@POST(“api/{data0}/{data1}/{data2}”)
fun getMoviesByCategory(@Path(“data0”)data0:String、@Path(“data1”)data1:Int、@Path(“data2”)data2:Int):单个
}
我的交互类:

public interface DevApi {
    @POST("api/{data0}/{data1}/{data2}")
    fun getMoviesByCategory(@Path("data0") data0: String, @Path("data1") data1: Int, @Path("data2") data2: Int): Single<ArrayList<KMovie>>
}
class KMovieInteractorImpl : KMovieInteractor {

  @Inject
  lateinit var testAPI: DevApi

  init {
    DaggerMovieInteractorComponent.create().inject(this)
  }

  override fun getGenreMovies(data0: String, data1: Int, data2: Int): Single<ArrayList<KMovie>> {
    return testAPI.getMoviesByCategory(data0, data1, data2).subscribeOn(Schedulers.io())
  }
}
2020-04-13 16:56:33.839 11675-11935/com.myapp D/OkHttp: --> POST https://user:password@dev.api.biz/api/data0/data1/data2
2020-04-13 16:56:33.841 11675-11937/com.myapp D/OkHttp: --> POST user:password@dev.api.biz/api/data00/data1/data2
2020-04-13 16:56:34.153 11675-11937/com.myapp D/OkHttp: <-- 401 Unauthorized user:password@dev.api.biz/api/data0/data1/data2(312ms)
2020-04-13 16:56:34.157 11675-11937/com.myapp D/OkHttp: <address>Apache/2.4.29 (Ubuntu) Server at dev.api.biz Port 443</address>
2020-04-13 16:56:34.178 11675-11935/com.myapp D/OkHttp: <-- 401 Unauthorized https://user:password@dev.api.biz/api/data00/data1/data2 (337ms)
类KMovieInteractorImpl:KMovieInteractor{ @注入 lateinit var testAPI:DevApi 初始化{ DaggerMovieInteractorComponent.create().inject(此) } 重写有趣的getGenreMovies(data0:String、data1:Int、data2:Int):单个{ 返回testAPI.getMoviesByCategory(数据0、数据1、数据2).subscribeOn(Schedulers.io()) } } logcat输出:

public interface DevApi {
    @POST("api/{data0}/{data1}/{data2}")
    fun getMoviesByCategory(@Path("data0") data0: String, @Path("data1") data1: Int, @Path("data2") data2: Int): Single<ArrayList<KMovie>>
}
class KMovieInteractorImpl : KMovieInteractor {

  @Inject
  lateinit var testAPI: DevApi

  init {
    DaggerMovieInteractorComponent.create().inject(this)
  }

  override fun getGenreMovies(data0: String, data1: Int, data2: Int): Single<ArrayList<KMovie>> {
    return testAPI.getMoviesByCategory(data0, data1, data2).subscribeOn(Schedulers.io())
  }
}
2020-04-13 16:56:33.839 11675-11935/com.myapp D/OkHttp: --> POST https://user:password@dev.api.biz/api/data0/data1/data2
2020-04-13 16:56:33.841 11675-11937/com.myapp D/OkHttp: --> POST user:password@dev.api.biz/api/data00/data1/data2
2020-04-13 16:56:34.153 11675-11937/com.myapp D/OkHttp: <-- 401 Unauthorized user:password@dev.api.biz/api/data0/data1/data2(312ms)
2020-04-13 16:56:34.157 11675-11937/com.myapp D/OkHttp: <address>Apache/2.4.29 (Ubuntu) Server at dev.api.biz Port 443</address>
2020-04-13 16:56:34.178 11675-11935/com.myapp D/OkHttp: <-- 401 Unauthorized https://user:password@dev.api.biz/api/data00/data1/data2 (337ms)
2020-04-13 16:56:33.839 11675-11935/com.myapp D/OkHttp:-->POSThttps://user:password@dev.api.biz/api/data0/data1/data2
2020-04-13 16:56:33.8411675-11937/com.myapp D/OkHttp:-->发布用户:password@dev.api.biz/api/data00/data1/data2

2020-04-13 16:56:34.153 11675-11937/com.myapp D/OkHttp:添加
授权
标题:

公共接口{
@POST(“api/{data0}/{data1}/{data2}”)
fun getMoviesByCategory(@Header(“Authorization”)auth:String,
@路径(“data0”)data0:String,
@路径(“数据1”)数据1:Int,
@路径(“数据2”)数据2:Int:单个
}
并将基本url更改为
dev.api.biz

您还可以使用OkHttp3中的
Credentials.basic(用户、密码)
函数来创建身份验证头。

iirc这只是基本的http身份验证。您需要使用值
Basic
设置
授权
标题,其中
用户名:密码
base 64编码。