Hallo, ich benutze PHP, um die Daten aus der MySQL-Datenbank zu bekommen und nach dem erfolgreichen Empfang der Daten rufe ich eine neue Aktivität auf, wo ich die Daten drucken muss.Wie gibt man Daten von PHP zu Eclipse zurück?
Dies ist mein Code:
public class RecoProd extends Activity {
EditText pd;
TextView error;
ArrayList<NameValuePair> postParameters;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recomain);
pd = (EditText) findViewById(R.id.name);
error = (TextView) findViewById(R.id.myTableLayout);
pd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("product", pd
.getText().toString()));
// String valid = "1";
DownloadWebPageTask dw = new DownloadWebPageTask();
dw.execute("");
}
});
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = null;
for (String url : urls) {
try {
response = CustomHttpClient.executeHttpPost("http://10.0.2.2/abc/check2.php", postParameters);
String res = response.toString();
// res = res.trim();
res = res.replaceAll("\\s+", "");
// error.setText(res);
if(res.equals("1")){ ***<<--------------I think the error is here***
Intent loginintent = new Intent(RecoProd.this, RecoProd1.class);
startActivity(loginintent);
}
else
error.setText("Sorry!! ");
} catch (Exception e) {
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
}
}
}
Das ist mein PHP-Code:
<?php
$pd=$_POST['name'];
//connect to the db
$user = "root";
$pswd = "";
$db = "mylogin";
$host = "localhost";
$conn = mysql_connect($host, $user, $pswd);
mysql_select_db($db);
$query = "SELECT * FROM recoprod ";
$result = mysql_query("SELECT * FROM recoprod");
while($row = mysql_fetch_array($result))
{
$output[]=$row;
}
/*
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error());
//this is where the actual verification happens
if(mysql_num_rows($result) > 0)
echo 1; // for correct login response
else
echo 0; // for incorrect login response */
?>
Ich bin eine Kraft nahe zu kommen, wenn ich es ausführen.
EDITED CODE
package com.androidhive.googleplacesandmaps;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class RecoProd extends Activity {
EditText pd;
TextView error;
ArrayList<NameValuePair> postParameters;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
try {
Class<?> strictModeClass = Class.forName("android.os.StrictMode", true, Thread.currentThread()
.getContextClassLoader());
Class<?> threadPolicyClass = Class.forName("android.os.StrictMode$ThreadPolicy", true, Thread
.currentThread().getContextClassLoader());
Class<?> threadPolicyBuilderClass = Class.forName("android.os.StrictMode$ThreadPolicy$Builder", true,
Thread.currentThread().getContextClassLoader());
Method setThreadPolicyMethod = strictModeClass.getMethod("setThreadPolicy", threadPolicyClass);
Method detectAllMethod = threadPolicyBuilderClass.getMethod("detectAll");
Method penaltyMethod = threadPolicyBuilderClass.getMethod("penaltyLog");
Method buildMethod = threadPolicyBuilderClass.getMethod("build");
Constructor<?> threadPolicyBuilderConstructor = threadPolicyBuilderClass.getConstructor();
Object threadPolicyBuilderObject = threadPolicyBuilderConstructor.newInstance();
Object obj = detectAllMethod.invoke(threadPolicyBuilderObject);
obj = penaltyMethod.invoke(obj);
Object threadPolicyObject = buildMethod.invoke(obj);
setThreadPolicyMethod.invoke(strictModeClass, threadPolicyObject);
} catch (Exception ex) {
String TAG = null;
Log.w(TAG, ex);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.recomain);
pd = (EditText) findViewById(R.id.name);
error = (TextView) findViewById(R.id.showresult);
pd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("product", pd
.getText().toString()));
// String valid = "1";
DownloadWebPageTask dw = new DownloadWebPageTask();
dw.execute("");
}
});
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = null;
for (String url : urls) {
try {
response = CustomHttpClient.executeHttpPost("http://10.0.2.2/abc/check2.php", postParameters);
String res = response.toString();
// res = res.trim();
res = res.replaceAll("\\s+", "");
// error.setText(res);
try{
res = "";
JSONArray jArray = new JSONArray(res);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("prod_id","id: "+json_data.getInt("prod_id")+
", prod_name: "+json_data.getString("prod_name")+
", prod_category: "+json_data.getInt("prod_category")+
", prod_cost: "+json_data.getInt("prod_cost")
);
//Get an output to the screen
res += "\n" + json_data.getString("prod_id") + " -> "+ json_data.getInt("prod_name");
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
try{
error.setText(res);
}
catch(Exception e){
Log.e("log_tag","Error in Display!" + e.toString());;
}
}
catch (Exception e) {
Log.e("log_tag","Error in http connection!!" + e.toString());
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
}
}
}
Das ist mein PHP-Code ist:
<?php
$pd = $_POST['name'];
//connect to the db
$user = "root";
$pswd = "";
$db = "mylogin";
$host = "localhost";
$conn = mysql_connect($host, $user, $pswd);
mysql_select_db($db);
$query = "SELECT * FROM recoprod ";
$result = mysql_query("SELECT * FROM recoprod");
while($row = mysql_fetch_array($result)) {
$output[] = $row;
}
print(json_encode($output));
mysql_close();
/*
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error());
//this is where the actual verification happens
if(mysql_num_rows($result) > 0)
echo 1; // for correct login response
else
echo 0; // for incorrect login response */
?>
Hallo, ich habe einige Änderungen, die oben bearbeitet Code überprüfen.
Und ich habe nur 2 Zeilen, die ich mit jeder Zeile mit 4 Daten abholen.
Veröffentlichen Sie Ihren Logcat-Fehler. –
Ich habe keine Logcat Fehler Ich denke, der Fehler ist in der PHP-Datei, wo ich die Daten zurückgeben, ich denke, ich mache es nicht richtig. –
versuchen Sie, Ihr Ergebnis in der Serverkonsole oder in Ihrem lokalen Host zu reproduzieren .und umgeben Sie Ihren Code mit try catch, um die Ausnahme während der Ausführung von Asyntask zu erhalten –