在試圖找到一種方法後,我想問如何通過JSON將數據從PHP正確發送到Android應用程序?如何正確地發送數據從PHP到Android通過JSON?
在我的應用程序中,我有一個自定義對話框,輸入電子郵件地址。 這將通過JSONParser.makeHttpRequest發送到php文件。 - >這是工作! 當我嘗試響應返回給我的android應用它給了我以下錯誤:
的logcat:
09-26 13:12:02.777: E/JSON Parser(26892): Error parsing data org.json.JSONException: Value 2013-09-26 of type java.lang.String cannot be converted to JSONObject
當我嘗試通過在瀏覽器上運行以下PHP「check_mail.php」我服務器它的工作原理,並給了我下面的代碼:在正常的網頁瀏覽器
2013-09-26 11:29:43 CLIENT -> SERVER: EHLO localhost 2013-09-26 11:29:43
CLIENT -> SERVER: AUTH LOGIN 2013-09-26 11:29:43
CLIENT -> SERVER: MzUyMjFtYWlsMQ== 2013-09-26 11:29:43
CLIENT -> SERVER: eWx2dDNoOQ== 2013-09-26 11:29:43
CLIENT -> SERVER: MAIL FROM: 2013-09-26 11:29:44
CLIENT -> SERVER: RCPT TO: 2013-09-26 11:29:45
CLIENT -> SERVER: DATA 2013-09-26 11:29:46
CLIENT -> SERVER: Date: Thu, 26 Sep 2013 13:29:37 +0200 2013-09-26 11:29:46
CLIENT -> SERVER: Return-Path: 2013-09-26 11:29:46
CLIENT -> SERVER: To: zensored 2013-09-26 11:29:46
CLIENT -> SERVER: From: zensored 2013-09-26 11:29:46
CLIENT -> SERVER: Subject: CheatApp your login Data 2013-09-26 11:29:46
CLIENT -> SERVER: Message-ID: <[email protected]> 2013-09-26 11:29:46
CLIENT -> SERVER: X-Priority: 3 2013-09-26 11:29:46
CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.7 (https://github.com/PHPMailer/PHPMailer/) 2013-09-26 11:29:46
CLIENT -> SERVER: MIME-Version: 1.0 2013-09-26 11:29:46 CLIENT -> SERVER: Content-Type: text/html; charset=iso-8859-1 2013-09-26 11:29:46
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit 2013-09-26 11:29:46
CLIENT -> SERVER: 2013-09-26 11:29:46
CLIENT -> SERVER: Body with login data... 2013-09-26 11:29:46
CLIENT -> SERVER: 2013-09-26 11:29:46
CLIENT -> SERVER: . 2013-09-26 11:29:46
CLIENT -> SERVER: QUIT {"success":1,"message":"Your data has been send to your email!"}
* FILES
輸出:*
reglogin.java - 的AsyncTask
String TAG_SUCCESS = "success";
String TAG_MESSAGE = "message";
/**
* Background Async Task to check the email
**/
private class checkEMail extends AsyncTask<String, String, String> {
// show progressdialog, while email is be checked
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(loginreg.this);
pDialog.setMessage("Check entered emailadress...");
pDialog.setIndeterminate(false);
pDialog.show();
}
/**
* Check the mail
* */
@Override
protected String doInBackground(String... args) {
// new jsonParser
jsonParser = new JSONParser();
// configure the paremeters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("BENUTZER_EMAIL", email));
// Log the entered emailadress
Log.v("EMAIL: ", email);
// configure json variable
JSONObject json = jsonParser.makeHttpRequest(url_check_mail,
"POST", params);
// give a log if json is null
if(json == null){
Log.v("JSON: ", "IS NULL");
}
// check for message & success tag
try {
Log.v("message", json.getString(TAG_MESSAGE));
Log.v("success", ""+json.getInt(TAG_SUCCESS));
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* Dismiss the progressdialog an show a toastmessage
* **/
@Override
protected void onPostExecute(String file_url) {
pDialog.dismiss();
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
}
check_mail.php
<?php
/*FILE DESCRIPTION
Name: check_mail.php
Developer: M. Seiz
Last change: 26.09.2013
-> This php file is checking the email adress from reglogin.java and if the email exists it sends
the login data to the entered email adress!
*/
$response = array();
//Check if required field isset
if (isset($_POST['BENUTZER_EMAIL'])) {
// write the email adress from android application to a local variable
$useremail = $_POST['BENUTZER_EMAIL'];
// include database connection class
require_once 'db_connect.php';
// connecting to database
$db = new DB_CONNECT();
// check if the email exists
$checkifuserexists = "SELECT COUNT(*) num FROM benutzer WHERE BENUTZER_EMAIL = '$useremail'";
$result = mysql_query($checkifuserexists) or die('error');
$row = mysql_fetch_assoc($result);
// if there is an entry with this email
if($row['num']) {
// asking for userdata
$checkifemailexists = "SELECT BENUTZER_NAME, BENUTZER_PASSWORT FROM benutzer WHERE BENUTZER_EMAIL = '$useremail'";
$result = mysql_query($checkifemailexists) or die('error');
$row = mysql_fetch_assoc($result);
// write userdata to local variables
$username = $row['BENUTZER_NAME'];
$userpw = $row['BENUTZER_PASSWORT'];
$useremail = $useremail;
//include once the phpmail.php class
require_once('phpmailer/class.phpmailer.php');
// setting up the email data
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.easyname.eu";
$mail->Port = 465;
$mail->IsHTML(true);
$mail->Username = "zensored";
$mail->Password = "zensored";
$mail->SetFrom("zensored");
$mail->Subject = 'CheatApp your login Data';
$mail->Body = 'Body with login data...';
$mail->AddAddress($useremail);
// if the mail could not be send...
if(!$mail->Send()){
$response["success"] = 0;
$response["message"] = 'E-Mail could not be send!';
echo json_encode($response);
} else {
$response["success"] = 1;
$response["message"] = 'Your data has been send to your email!';
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = 'E-Mail does not exist!';
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>