Red de conocimiento informático - Material del sitio web - ¿Cómo enviar grandes cantidades de datos usando Post en Android?

¿Cómo enviar grandes cantidades de datos usando Post en Android?

Cómo utilizar Post para enviar grandes cantidades de datos en Android:

Implementado en 1. Android

Parte Activity_main.xml

Diseño relativo xmlns:Android = "/apk/RES/Android "

xmlns:tools="/tools "

Android:layout_width="match_parent"

Android:layout_height="match_parent"

Herramientas:context=".

MainActivity " >

vista lttext

android:id="@ id/lblPostResult "

Android: layout_width = " wrap_content "

Android:layout_height = " wrap_content "

Android:layout_above = " @ id/but post "

Android:layout_center horizontal = " true "

Android: texto ="Enviar resultados"/gt;

botón lt

android:id="@ id/butPost "

Android: layout_width = " wrap _ content "

Android: diseño_ altura = " wrap _ content "

Android: diseño_alignParentBottom = " verdadero "

Android: diseño _ centro horizontal = " verdadero "

Android: diseño _ margen inferior = " 25dp "

Android: texto = "Enviar prueba"/ gt ;

lt/diseño relativo gt;

//Sección de importación

Importar paquete de sistema operativo Android;

Importar actividad de aplicación de Android;

Menú de importación. /p>

Importar vista de Android .

Botón de widget de importación de Android;

Importar Android.widget.textview;

Importar Android. .widget.toast;

Importar Android.util.log;

Importar Java.io.inputstream;

Importar Java hashmap . >

Importar Java .util .map;

Importar Java .util .

Actividad principal de clase pública parte de actividad extendida

Botón privado m _ butPost

m _ but post =( Button)findViewById(r . id . but post);

m_butPost.setOnClickListener(nueva vista.

OnClickListener() {

public void onClick(view v) {

pero publica _ OnClick(v);

}

} );

//Enviar prueba

Nulo privado peroPost_OnClick(view v){

//Solicitar par clave-valor de parámetro

String strreccssmsg = " Prueba de SMS

//Enviar

RecSmsToPost(strrecsmmsmsg);

OpenToast("Enviar prueba completada");

}

//Enviar después de recibir el mensaje de texto

private void RecSmsToPost(String strrecsmmsmsg){

string strNowDateTime = getNowDateTime(" yyyy-MM-DD | HH:MM:ss ");//Hora actual

//Parámetros

Map ltString, String gtparams = new HashMap ltString, String gt();

params.put("RECSMSMSG ",strrecsmmsmsg);

//params.put("name ","李思");

//Ruta de solicitud del servidor

Cadena strUrlPath = ". HttpURLConnection

Importar Java.net.URL;

Importar flujo Java.io.output;

Importar Java.io.inputstream;

Importar Java . util . map;

Importar Java .io .io excepción;

Importar Java net . bytearrayoutputstream;

Clase pública HttpUtils {

/*

*Función: enviar una solicitud de publicación al servidor.

* Parámetro: los parámetros solicitan contenido de texto y formato de codificación.

*/

Cadena estática pública submitPostData(ruta de cadena strurl, mapa ltString, cadena gtparams, codificación de cadena) {

byte[]data = getRequestData (params , codificar). toString().

getBytes(); //Obtener el cuerpo de la solicitud

Pruebe {

//Ruta URL de cadena = "http://192.168.1.9:80/JJKSms/rec SMS.PHP"

URL url=nueva URL(strUrlPath);

HttpURLConnection http urlconnection =(HttpURLConnection)URL conexión abierta(); );//Establecer tiempo de espera de conexión

httpurlconnection setdoinput(true);//Abra el flujo de entrada para obtener datos del servidor.

httpurlconnection . setdoooutput(true); //Abre el flujo de salida para enviar datos al servidor.

conexión httpurl . setrequestmethod(" POST "); //Configuración para enviar datos a través de Post.

httpurlconnection . setuse caches(false); //El caché no se puede utilizar cuando se utiliza el modo de publicación.

//Establezca el tipo de cuerpo de la solicitud en tipo de texto.

httpurlconnection.setrequestproperty("Content-Type", "application/x-www-form-urlencoded");

//Establece la longitud del cuerpo de la solicitud.

httpurlconnection.setrequestproperty("Content-Length", string.valueof(data.Length));

// Obtenga el flujo de salida y escriba los datos en el servidor.

flujo de salida flujo de salida = httpurlconnection .obtener flujo de salida();

outputStream.write(data)

int respuesta = httpurlconnection(); //Obtiene el código de respuesta del servidor.

if(response == HttpURLConnection. HTTP_OK) {

InputStream inptStream = httpurlconnection . getinputstream();

Devolver dealResponseResult(inptStream); Resultado de la respuesta

}

} catch (IOException e) {

//e . printstacktrace();

return "err : "e.getMessage(). toString();

}

Devuelve "-1";

}

/*

* Función: encapsular la información del cuerpo de la solicitud.

* Parámetro: los parámetros solicitan contenido de texto y formato de codificación.

*/

Búfer de cadena estático público getrequest data(Map lt; String, String gtparams, codificación de cadena) {

búfer de cadena buffer de cadena = nuevo búfer de cadena (); //Almacena la información del cuerpo de la solicitud encapsulada.

Pruebe {

For (Fig. Entrada ltString, String gtentry: params.entrySet()) {

string buffer append(entry . getkey(). )

. agregar(" = ")

. append(codificador de URL. codificar(entrada. getvalue(), codificar))

. Append(amp);

}

búfer de cadena. eliminar charat(búfer de cadena. longitud()-1 //Eliminar el último ""

); } catch(Excepción e) {

e . printstacktrace();

}

Devuelve stringBuffer

}

/*

*Función: Procesar el resultado de la respuesta del servidor (convertir el flujo de entrada en una cadena)

* parámetro: inputstream El flujo de entrada de respuesta del servidor.

*/

Cadena estática pública dealResponseResult(InputStream InputStream){

String resultData = null//Resultados del procesamiento de almacenamiento

ByteArrayOutputStream ByteArrayOutputStream = new ByteArrayOutputStream();

byte[] data = nuevo byte[1024];

int len ​​​​= 0;

Intenta {

while((len = inputstream. read(data))!= -1) {

bytearrayoutputstream. write(data, 0, len); p>

} catch (IOException e) {

e . printstacktrace();

}

datos del resultado = nueva cadena (flujo de salida de matriz de bytes). tobytearray());

Devolver datos de resultados

}

}

2. Terminal de servidor, uso el modo wamp, por supuesto, también hay otros modos disponibles. Cree un archivo RecSms.php con el siguiente contenido:

lt? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)

require _ once(' Log/Log helper . PHP ');

Echo "Hola".

"post

foreach($_REQUEST as $k = gt; $v){

echo $k; echo "-";

echo $v ; Echo" lt/br >;;

}

WriteLog('Hola RecSms.php-');

foreach($ _ POST as $ k = gt; $v){

Escribir registro($k .' -'.$ v);

}

foreach($ _ GET como $ k = gt; $v){

Escribir registro($k .' -'. $ v);

}

gt

Escriba los datos enviados en el archivo Log\Log.php.

LogHelper.php es un archivo de registro, el archivo de código es el siguiente:

lt? Lenguaje de programación del lado del servidor (abreviatura de Preprocesador de hipertexto profesional)

Función de registro de escritura ($msg){

$fp = fopen("Log\Log.php ", " a " ) ; //Borra el archivo y luego escribe.

IF (punto flotante)

{

date_default_timezone_set('Asia/Chongqing');

$time=date("H :i:s ", strtotime(" ahora "));

$flag=fwrite($fp, $time." ".$MSG." \ r \ n ");

fclose($ FP);

}

}

gt

Todo el código ha sido escrito.

Abra wamp, haga clic en Enviar prueba en Android y luego escriba los datos enviados en el archivo Log.php.