Android: no se pueden recibir datos de PHP

H. Farid

Solía OkHttprecibir mensajes de texto de a URL. La URL es una phpsecuencia de comandos.

PHP:

<?php
    echo 'success';
?>

Lo hago con el siguiente código:

OkHttpClient hc = new OkHttpClient.Builder()
    .connectTimeout(10, TimeUnit.SECONDS)
    .readTimeout(10, TimeUnit.SECONDS)
    .writeTimeout(10, TimeUnit.SECONDS)
    .build();
String url = "http://hadifaridhadi.vcn.ir/com.hfapp.rokatshomar/imgofday.php";
HttpUrl.Builder httpUrlBuilder = HttpUrl.parse(url).newBuilder();
httpUrlBuilder.addQueryParameter("i", "3");
Request request = new Request.Builder()
    .url(httpUrlBuilder.build())
    .build();
Response response = null;
try {
    response = hc.newCall(request).execute();
} catch (Throwable e) {
    e.printStackTrace();
}
if (response != null) {
    result = response.body().string();
}

Con un navegador, recibo el "éxito", pero en mi aplicación de Android, recibí una basura (POR FAVOR LEA COMPLETAMENTE):

ingrese la descripción de la imagen aquí

Da un enlace (URL) que termina con:, ?i=1así que agregué este parámetro con okhttp:httpUrlBuilder.addQueryParameter("i", "1");

Después de esto, recibí otra basura y ese enlace termina con:, ?i=2intenté eso, ¡pero el servidor envió otra basura! Un enlace que termina en ?i=3. Cuando probé esto, recibí ?i=4y ... (El isube cada vez que envía una solicitud)

¿Qué está mal? ¿Por qué no puedo recibir ese mensaje de éxito?

H. Farid

¡Finalmente, se resolvió! Usé Android WebViewy CookieManagerpara recibir el text/htmlenvío PHP. Pasos: 1. un conjunto onPageFinishedde WebView(la WebViewque no es visual). 2. Cargue su URL por WebView. 3. Cuando se onPageFinishedinvoca, utilícelo CookieManagerpara obtener la cookie de esa URL. 4. Agregue esa cookie para solicitar encabezados.

WebView myWebView = new WebView(MainActivity.this);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        final String cookies = CookieManager.getInstance().getCookie("http://hadifaridhadi.vcn.ir/com.hfapp.rokatshomar/imgofday.php?req=hasimg");                                                                                           
        try {
            myWebView.destroy();
        } catch (Throwable e) {
            e.printStackTrace();
        }
        new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                String result = "";
                try {
                    OkHttpClient hc = new OkHttpClient.Builder()
                            .connectTimeout(10, TimeUnit.SECONDS)
                            .readTimeout(10, TimeUnit.SECONDS)
                            .writeTimeout(10, TimeUnit.SECONDS)
                            .build();
                    String url = "http://hadifaridhadi.vcn.ir/com.hfapp.rokatshomar/imgofday.php";
                    HttpUrl.Builder httpUrlBuilder = HttpUrl.parse(url).newBuilder();
                    httpUrlBuilder.addQueryParameter("req", "hasimg");
                    Request request = new Request.Builder()
                            .url(httpUrlBuilder.build())
                            .addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36")
                            .addHeader("Cookie", cookies + "; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/")
                            .build();
                    Response response = null;
                    try {
                        response = hc.newCall(request).execute();
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                    if (response != null && response.isSuccessful()) {
                        result = response.body().string();
                    }
                } catch (Throwable e) {
                    e.printStackTrace();
                }
                // WE RECEIVED THE TEXT IN HTML (mine is 'yes')
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }}).start();
    }
}
myWebView.loadUrl("http://hadifaridhadi.vcn.ir/com.hfapp.rokatshomar/imgofday.php?req=hasimg");

Notas:

1. Recibe el texto del cuerpo HTML, no el texto sin formato.

2. Este método pasa el testcookie-nginx-module , un sistema de verificación humana. Usamos cookies reales para hacer eso.

3. Debe agregar parámetros de consulta a la URL que carga con WebView(agregar ?key=value), pero no debe agregar esto a la URL que carga con OkHttp(agregar con httpUrlBuilder.addQueryParameter("key", "value")).

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

No se pueden recibir cadenas de la base de datos de Android Firebase

no se pueden recibir datos adicionales de la notificación push de análisis en Android

no se pueden recibir datos adicionales de la notificación push de análisis en Android

No se pueden recibir datos con libusb

No se pueden recibir datos POST en nodeJs

No se pueden recibir datos de la base de datos de firebase

No se pueden recuperar datos de Firebase (Android)

Error de CORS, no se pueden recibir datos del backend principal de asp.net

No se pueden recibir datos de cadena de Python Socket a Java Socket

Websockets de Python, no se pueden recibir mensajes

Android: no se pueden recibir mensajes de GCM / no se llama al oyente

Zendesk API + Angular: no se pueden recibir datos debido a CORS

Android: no se pueden recibir imágenes a través de ACTION_SEND desde FaceBook

No se pueden obtener datos de publicación de Javascript a PHP

No recibir datos correctos de la base de datos firebird cuando se usa PHP

No se pueden recibir datos en el conector de extracción usando zeroMQ, "Dirección en uso" - Error

No se pueden recibir datos en un método HttpPost de API web desde la publicación React axios

No se pueden guardar datos a través de SharedPreferences en Android

No se pueden obtener datos de dataSnapShot en Android

No se pueden guardar y recuperar datos de SharedPreferences en Android

No se pueden obtener datos de dataSnapShot en Android

no se pueden recuperar datos de firebase en android studio 3.5

Amazon SQS Java SDK: no se pueden recibir atributos de mensaje

No se pueden recibir mensajes de KafkaConsumer sin colgar

API de Facebook Messenger: no se pueden recibir solicitudes POST

No se pueden recibir eventos de acceso al dispositivo

No se pueden recibir notificaciones de cambios mediante SqlDependency

recibir datos de ajax a php no funciona

No se pueden recibir datos cuando se combinan la selección y el protocolo UDP

TOP Lista

CalienteEtiquetas

Archivo