Pourquoi la variable $id est-elle automatiquement convertie en chaîne sur le serveur WAMP mais pas sur le serveur Bluehost ?
P粉933003350
P粉933003350 2023-09-08 23:26:44
0
1
386

En PHP, la variable $id doit recevoir une valeur entière du client. Cependant, lorsque le client envoie la valeur id sous forme d'entier au script PHP à l'aide de la méthode de requête POST, elle est automatiquement convertie en type chaîne en PHP lorsque le script est téléchargé sur le serveur WAMP. D'un autre côté, lorsque le script est téléchargé sur le serveur Bluehost, les valeurs d'identification sont toujours des entiers et ne sont pas converties en chaînes, ce que je souhaite.

Il s'agit d'un simple script PHP :


      

La valeur id envoyée par le client est envoyée via l'application Android, voici comment j'envoie la valeur id au script PHP :

Classe 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); } }

Classe CountryRepository

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; } }
      

Je ne sais pas pourquoi cette différence de comportement se produit entre les deux serveurs.

J'utilise la dernière version du serveur PHP et WAMP.

P粉933003350
P粉933003350

répondre à tous (1)
P粉178894235

Toutes les requêtes via HTTP sont envoyées sous forme de chaînes. Nous devons l'adapter à nos besoins. Dans votre cas, le comportement est étrange. Essayez de vérifier si la version de PHP est la même aux deux extrémités.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!