shabgardetanha
شنبه 15 آبان 1395, 23:00 عصر
سلام برا استخراج عکس از بانک و نمایش در اندروید در اکیلیپس در سمت سرور این کد رو دارم
if (isset($_GET["password"])) {
$password = $_GET['password'];
$result = mysql_query("SELECT * FROM user WHERE password = $password");
if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$book = array();
$book["password"] = $result["password"];
$book["image"] = base64_encode($result["image"]);
// success
$response["success"] = 1;
// user node
$response["book"] = array();
array_push($response["book"], $book);
echo json_encode($response);
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No book found";
// echo no users JSON
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "No book found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
خروجیم اینه
{"success":1,"book":[{"password":"123","name":"ali","image":"MjE3MGZmY2EwNGIxZTIyYjNkNDUwY2NjNDcyYzY0YWUuanBj"}]}
و در اندروید اینو نوشتم
protected void onPostExecute(JSONObject json) {
// json success tag
int success = 0;
try {
success = json.getInt(TAG_SUCCESS);
} catch (JSONException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
if (success == 1) {
JSONArray bookObj = null;
try {
bookObj = json.getJSONArray(TAG_book);
} catch (JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} // JSON
// Array
JSONObject book = null;
try {
book= bookObj.getJSONObject(0);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ImageView image=(ImageView)findViewById(R.id.imageView1);
try {
img1 = book.getString(TAG_IMAGE);
} catch (JSONException e) {
e.printStackTrace();
}
byte[] encodeByte = Base64.decode(img1, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
image.setImageBitmap(bitmap);
اما در اجرا هنگام رسیدن به این خط
image.setImageBitmap(bitmap);
خطا میگیره و برنامه بسته میشه اینم خطای لوک کت هست
E/AndroidRuntime(1723): FATAL EXCEPTION: main
E/AndroidRuntime(1723): java.lang.NullPointerException
E/AndroidRuntime(1723): at com.example.mb_ab.Login$GetbookDetails.onPostExecu te(Login.java:233)
E/AndroidRuntime(1723): at com.example.mb_ab.Login$GetbookDetails.onPostExecu te(Login.java:1)
E/AndroidRuntime(1723): at android.os.AsyncTask.finish(AsyncTask.java:602)
E/AndroidRuntime(1723): at android.os.AsyncTask.access$600(AsyncTask.java:156 )
E/AndroidRuntime(1723): at android.os.AsyncTask$InternalHandler.handleMessage (AsyncTask.java:615)
E/AndroidRuntime(1723): at android.os.Handler.dispatchMessage(Handler.java:99 )
E/AndroidRuntime(1723): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1723): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
E/AndroidRuntime(1723): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1723): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1723): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
E/AndroidRuntime(1723): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
E/AndroidRuntime(1723): at dalvik.system.NativeStart.main(Native Method)
درضمن ادرس عکس رو در بانک ذخیره کردم و در یک پوشه عکس ها رو قرار دادم
ممنون میشم کمک کنید
if (isset($_GET["password"])) {
$password = $_GET['password'];
$result = mysql_query("SELECT * FROM user WHERE password = $password");
if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$book = array();
$book["password"] = $result["password"];
$book["image"] = base64_encode($result["image"]);
// success
$response["success"] = 1;
// user node
$response["book"] = array();
array_push($response["book"], $book);
echo json_encode($response);
} else {
// no product found
$response["success"] = 0;
$response["message"] = "No book found";
// echo no users JSON
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "No book found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
خروجیم اینه
{"success":1,"book":[{"password":"123","name":"ali","image":"MjE3MGZmY2EwNGIxZTIyYjNkNDUwY2NjNDcyYzY0YWUuanBj"}]}
و در اندروید اینو نوشتم
protected void onPostExecute(JSONObject json) {
// json success tag
int success = 0;
try {
success = json.getInt(TAG_SUCCESS);
} catch (JSONException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
}
if (success == 1) {
JSONArray bookObj = null;
try {
bookObj = json.getJSONArray(TAG_book);
} catch (JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} // JSON
// Array
JSONObject book = null;
try {
book= bookObj.getJSONObject(0);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ImageView image=(ImageView)findViewById(R.id.imageView1);
try {
img1 = book.getString(TAG_IMAGE);
} catch (JSONException e) {
e.printStackTrace();
}
byte[] encodeByte = Base64.decode(img1, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
image.setImageBitmap(bitmap);
اما در اجرا هنگام رسیدن به این خط
image.setImageBitmap(bitmap);
خطا میگیره و برنامه بسته میشه اینم خطای لوک کت هست
E/AndroidRuntime(1723): FATAL EXCEPTION: main
E/AndroidRuntime(1723): java.lang.NullPointerException
E/AndroidRuntime(1723): at com.example.mb_ab.Login$GetbookDetails.onPostExecu te(Login.java:233)
E/AndroidRuntime(1723): at com.example.mb_ab.Login$GetbookDetails.onPostExecu te(Login.java:1)
E/AndroidRuntime(1723): at android.os.AsyncTask.finish(AsyncTask.java:602)
E/AndroidRuntime(1723): at android.os.AsyncTask.access$600(AsyncTask.java:156 )
E/AndroidRuntime(1723): at android.os.AsyncTask$InternalHandler.handleMessage (AsyncTask.java:615)
E/AndroidRuntime(1723): at android.os.Handler.dispatchMessage(Handler.java:99 )
E/AndroidRuntime(1723): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1723): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
E/AndroidRuntime(1723): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1723): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1723): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
E/AndroidRuntime(1723): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
E/AndroidRuntime(1723): at dalvik.system.NativeStart.main(Native Method)
درضمن ادرس عکس رو در بانک ذخیره کردم و در یک پوشه عکس ها رو قرار دادم
ممنون میشم کمک کنید