2 回答
TA贡献1887条经验 获得超5个赞
亲爱的朋友。我建议将以下两行添加到 build.gradle 文件中。
// Logging Interceptor
implementation "com.squareup.okhttp3:logging-interceptor:4.7.2"
implementation 'org.conscrypt:conscrypt-android:2.4.0'
并如下所示使用它
object ApiServiceContainer {
private var apiService: ApiService? = null
fun getApiService(): ApiService {
if (apiService == null) {
val logging = HttpLoggingInterceptor()
logging.level = HttpLoggingInterceptor.Level.BODY
val httpClient = OkHttpClient.Builder()
httpClient.addInterceptor { chain ->
val original = chain.request()
val requestBuilder = original.newBuilder()
.header("Authorization", "Bearer " + token)
.header("Accept", "application/json")
.header("Content-Type", "application/json")
val request = requestBuilder.build()
chain.proceed(request)
}
httpClient.connectTimeout(30, TimeUnit.SECONDS)
httpClient.readTimeout(30, TimeUnit.SECONDS)
httpClient.addNetworkInterceptor(logging)
val okHttpClient = httpClient.build()
val gson = GsonBuilder()
.setLenient()
.create()
val retrofit = Retrofit.Builder()
.baseUrl(EndPoints.API_BASE_URL)
.addConverterFactory(
GsonConverterFactory.create(gson)
)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build()
apiService = retrofit.create(ApiService::class.java)
}
return apiService!!
}
这样你就可以看到服务器发出的错误。
TA贡献1784条经验 获得超7个赞
我发现,无论出于何种原因,在 php 中接收时,发送除数组或字段之外的任何内容都会添加额外的字符,我最终只是使用这样的字段。
interface ApiInterface {
@FormUrlEncoded
@POST(BuildConfig.URL_REGISTER)
fun signUpUser(@Field("username") username: String,
@Field("password") password: String,
@Field("email") email: String,
@Field("termsOfService") termsOfService: Boolean,
@Field("profilePicPath") profilePicPath: String): Call<Response>
}
在 php 中它是这样接收的
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$termsOfService = $_POST['termsOfService'];
$profilePicPath = $_POST['profilePicPath'];
- 2 回答
- 0 关注
- 116 浏览
添加回答
举报