¿Cómo enviar grandes cantidades de datos usando Post en Android?
Implementado en 1. Android
Parte Activity_main.xml
Diseño relativo xmlns:Android = "/apk/RES/Android "
xmlns:tools="/tools " p>
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Herramientas:context=".
MainActivity " >
vista lttext
android:id="@ id/lblPostResult "
Android: layout_width = " wrap_content " p>
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 " p>
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 extendidaBotó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 p >
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.