Mengapa pembolehubah $id ditukar secara automatik kepada rentetan pada pelayan WAMP tetapi tidak pada pelayan Bluehost?
P粉933003350
P粉933003350 2023-09-08 23:26:44
0
1
380

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") Single getCountries(@Field("id") int countryId); } }

Kelas CountriesRepository

public class CountriesRepository { public LiveData getCountries(Context context) { MutableLiveData mutableLiveData = new MutableLiveData<>(); PublishSubject retrySubject = PublishSubject.create(); RetrofitManager.getApi().getCountries(Navigation.findNavController(MainActivity.activityMainBinding.activityMainFragmentContainerViewContainer).getPreviousBackStackEntry() == null ? SharedPreferencesManager.getIntegerValue(context, SharedPreferencesManager.Keys.COUNTRY_ID.name()) : -1) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnSubscribe(mutableLiveData::setValue) .doOnError(throwable -> { LinkedHashSet linkedHashSet = new LinkedHashSet<>(); linkedHashSet.add(!Utils.isInternetConnected(context) ? 100 : throwable instanceof SocketTimeoutException ? 200 : 300); linkedHashSet.add(retrySubject); mutableLiveData.setValue(linkedHashSet); }) .retryWhen(throwableFlowable -> throwableFlowable.flatMap(throwable -> retrySubject.toFlowable(BackpressureStrategy.DROP).take(1), (throwable, s) -> s)) .subscribe(countryModelResponse -> { if (countryModelResponse.getRequestStatus() == 100) mutableLiveData.setValue(countryModelResponse); else { LinkedHashSet linkedHashSet = new LinkedHashSet<>(); linkedHashSet.add(300); linkedHashSet.add(retrySubject); mutableLiveData.setValue(linkedHashSet); } }); return mutableLiveData; } }
      

Saya tidak pasti mengapa perbezaan tingkah laku ini berlaku antara kedua-dua pelayan.

Saya menggunakan versi terkini pelayan PHP dan WAMP.

P粉933003350
P粉933003350

membalas semua (1)
P粉178894235

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.

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!