Dalam PHP, pembolehubah $id harus menerima nilai integer daripada klien. Walau bagaimanapun, apabila pelanggan menghantar nilai id sebagai integer kepada skrip PHP menggunakan kaedah permintaan POST, ia secara automatik ditukar kepada jenis rentetan dalam PHP apabila skrip dimuat naik ke pelayan WAMP. Sebaliknya, apabila skrip dimuat naik ke pelayan Bluehost, nilai id masih integer dan tidak ditukar kepada rentetan, itulah yang saya mahukan.
Ini ialah skrip PHP mudah:
Nilai id yang dihantar dari klien dihantar melalui aplikasi Android, ini adalah cara saya menghantar nilai id ke skrip PHP:
Kelas RetrofitManager
public class RetrofitManager { private static RetrofitManager.Api api; public static RetrofitManager.Api getApi() { if (api == null) api = new Retrofit.Builder() .baseUrl("http://192.151.5.721/API/") .client(new OkHttpClient.Builder().readTimeout(3, TimeUnit.MINUTES).writeTimeout(3, TimeUnit.MINUTES).connectTimeout(25, TimeUnit.SECONDS).build()) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) .build() .create(Api.class); return api; } public interface Api { @FormUrlEncoded @POST("Countries/Get.php") SinglegetCountries(@Field("id") int countryId); } } Kelas CountriesRepository
public class CountriesRepository { public LiveDataSaya tidak pasti mengapa perbezaan tingkah laku ini berlaku antara kedua-dua pelayan.
Saya menggunakan versi terkini pelayan PHP dan WAMP.
Semua permintaan melalui HTTP dihantar sebagai rentetan. Kita perlu membentuknya mengikut keperluan kita. Dalam kes anda, tingkah laku itu pelik. Cuba semak sama ada versi PHP adalah sama pada kedua-dua hujungnya.