recherche

Maison  >  Questions et réponses  >  le corps du texte

Pourquoi la variable $id est-elle automatiquement convertie en chaîne sur le serveur WAMP mais pas sur le serveur Bluehost ?

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 :

<?php

$id = $_POST["id"];

if (is_int($id))
    echo "It is integer"; // It will print this if the PHP script was uploaded to the Bluehost server.
else if (is_string($id))
    echo "It is string"; // It will print this if the PHP script was uploaded to the WAMP server.

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

    }

}

Classe CountryRepository

public class CountriesRepository {

    public LiveData<Object> getCountries(Context context) {
        MutableLiveData<Object> mutableLiveData = new MutableLiveData<>();
        PublishSubject<String> 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<Object> 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<Object> 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粉933003350P粉933003350490 Il y a quelques jours521

répondre à tous(1)je répondrai

  • P粉178894235

    P粉1788942352023-09-09 14:02:06

    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.

    répondre
    0
  • Annulerrépondre