Cómo enviar cadena de Android a php
Estaba tratando de crear una aplicación en línea. Me gustaría enviar una cadena de mis aplicaciones a mi script PHP, pero terminó con el php no recibe ninguna cadena de mis aplicaciones, lo que significa que el PhP se hará eco de nuevo NULL. He estado haciendo la investigación en línea y buscando la solución, pero ninguno de ellos trabajó.
A continuación se muestra mi código MainActivity.java:
- ¿Cómo debo manejar los tiempos de espera del servidor y las respuestas de código de error a una entrada de http en la aplicación para Android?
- Envío de datos JSON de Android a PHP y escritura a archivo de texto
- Servidor ByetHost que pasa valores html "Comprobación de su navegador" con JSON String
- Cómo subir imágenes al servidor Php y almacenar en phpmyadmin
- Cómo enviar múltiples valores a un servidor web a la vez
package my.com.tutionathome.calvinlau.testserver; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { Button b; EditText et; TextView tv; HttpPost httppost; StringBuffer buffer; HttpResponse response; HttpClient httpclient; List<NameValuePair> nameValuePairs; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button)findViewById(R.id.Button01); et= (EditText)findViewById(R.id.EditText01); tv= (TextView)findViewById(R.id.tv); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { final ProgressDialog p = new ProgressDialog(v.getContext()).show(v.getContext(),"Waiting for Server", "Accessing Server"); Thread thread = new Thread() { @Override public void run() { try{ httpclient=new DefaultHttpClient(); httppost= new HttpPost("http://10.0.0.2/my_folder_inside_htdocs/connection.php"); // make sure the url is correct. //add your data nameValuePairs = new ArrayList<NameValuePair>(1); // Always use the same variable name for posting ie the android side variable name and php side variable name should be similar, nameValuePairs.add(new BasicNameValuePair("username",et.getText().toString().trim())); // $"username" = $_POST['username']; httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); //Execute HTTP Post Request response=httpclient.execute(httppost); ResponseHandler<String> responseHandler = new BasicResponseHandler(); final String response = httpclient.execute(httppost, responseHandler); System.out.println("Response : " + response); runOnUiThread(new Runnable() { public void run() { p.dismiss(); tv.setText("Response from PHP : " + response); } }); }catch(Exception e){ runOnUiThread(new Runnable() { public void run() { p.dismiss(); } }); System.out.println("Exception : " + e.getMessage()); } } }; thread.start(); } }); } }
Y mi código php:
<?php // put your code here $hostname_localhost ="localhost"; $database_localhost ="android"; $username_localhost ="root"; $password_localhost =""; $localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($database_localhost, $localhost); $username = $_POST['username']; $password = $_POST['password']; $query_search = "select Email, Username from tblmember where Username = '".$username."' AND Email = '".$password. "'"; $query_exec = mysql_query($query_search) or die(mysql_error()); $rows = mysql_num_rows($query_exec); if($username == NULL){ echo "NULL"; }else{ echo $username; } ?>
Este es mi manifiesto de Android:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.com.tutionathome.calvinlau.testserver"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
- Obtener imágenes y metadatos desde el servidor PHP a android
- Enviar array php con POST android
- Cómo sincronizar datos entre la aplicación android y el servidor php?
- Cuando se llama a un archivo php con algún código js de android, el código js es la salida de una llamada
- Cómo cifrar en el dispositivo y descifrar en el lado del servidor con la clave encryptoin
- Cómo hacer json api
- El navegador de Android rechaza contenido-disposición: ¿en línea?
- Cómo decodificar y codificar la imagen base64 sin perder la calidad y el tamaño
Hay un montón de bibliotecas para facilitar esto, el ahorro de muchas líneas de código, en particular, sugiero retrofit .
Pruebe este código.
AysncyTask
private class AysncyTask extends AsyncTask<Void,Void,Void> { private ProgressDialog regDialog=null; @Override protected void onPreExecute() { super.onPreExecute(); regDialog=new ProgressDialog(this); regDialog.setTitle(getResources().getString(R.string.app_name)); regDialog.setMessage(getResources().getString(R.string.app_pleasewait)); regDialog.setIndeterminate(true); regDialog.setCancelable(true); regDialog.show(); } @Override protected Void doInBackground(Void... params) { try { new Thread(new Runnable() { @Override public void run() { ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); postParameters.add(new BasicNameValuePair("username", et.getText().toString().trim())); postParameters.add(new BasicNameValuePair("password", etpass.getText().toString().trim())); String response = null; try { response = SimpleHttpClient .executeHttpPost("http://10.0.0.2/my_folder_inside_htdocs/connection.php", postParameters); res = response.toString(); return res; } catch (Exception e) { e.printStackTrace(); errorMsg = e.getMessage(); } } }).start(); try { Thread.sleep(3000); // error.setText(resp); if (null != errorMsg && !errorMsg.isEmpty()) { } } catch (Exception e) { } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); if(regDialog!=null) { regDialog.dismiss(); //do you code here you want } // do what u do }
SimpleHttpClient.java
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.util.ArrayList; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; public class SimpleHttpClient { /** The time it takes for our client to timeout */ public static final int HTTP_TIMEOUT = 30 * 1000; // milliseconds /** Single instance of our HttpClient */ private static HttpClient mHttpClient; /** * Get our single instance of our HttpClient object. * * @return an HttpClient object with connection parameters set */ private static HttpClient getHttpClient() { if (mHttpClient == null) { mHttpClient = new DefaultHttpClient(); final HttpParams params = mHttpClient.getParams(); HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT); HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT); ConnManagerParams.setTimeout(params, HTTP_TIMEOUT); } return mHttpClient; } public static String executeHttpPost(String url, ArrayList<NameValuePair> postParameters) throws Exception { BufferedReader in = null; try { HttpClient client = getHttpClient(); HttpPost request = new HttpPost(url); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); request.setEntity(formEntity); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); String result = sb.toString(); return result; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static String executeHttpatch(String url, ArrayList<NameValuePair> postParameters) throws Exception { BufferedReader in = null; try { HttpClient client = getHttpClient(); HttpPost request = new HttpPost(url); UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); request.setEntity(formEntity); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); String result = sb.toString(); return result; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * Performs an HTTP GET request to the specified url. * * @param url The web address to post the request to * @return The result of the request * @throws Exception */ public static String executeHttpGet(String url) throws Exception { BufferedReader in = null; try { HttpClient client = getHttpClient(); HttpGet request = new HttpGet(); request.setURI(new URI(url)); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); String result = sb.toString(); return result; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } }