从PHP返回的Json对象为空

时间:2019-09-06 17:03:06

标签: java php android retrofit

我正在使用php编写脚本,以将图像上传到本地服务器。 用户将从Android应用程序上传图片,而我正在使用改造库来上传图片。我想返回在php中为图像生成的路径和名称,以便在android中进行进一步处理。问题是php脚本总是返回一个空的json

PHP脚本

<?php

if (isset($_POST['image'])) {


    $upload_folder = "Signatures"; // Name of the folder.
    $unique_name = microtime().uniqid(); // Name of the image. use time method to make it unique.
    $path = "$upload_folder/$unique_name.jpg";
    $Image = $_POST['image'];


    if (file_put_contents($path,base64_decode($Image)) != false) {


        $data = [ 'imagePath' => $path];
        header('Content-type: application/json');
        echo json_encode( $data );
        exit;   
        } 

    else {
        $data = [ 'imagePath' => 'No image path'];
        header('Content-type: application/json');
        echo json_encode( $data );
        exit; 
        }   
    }

else {

    $data = [ 'imagePath' => 'No image path'];
        header('Content-type: application/json');
        echo json_encode( $data );
        exit;

}

?>

删除方法签名

    @FormUrlEncoded
@POST ("Images.php")
Call<JSONObject> uploadImage (@Field("image") String image );

上传图片方法

 public void uploadImage(){

    String image =  imageToString(signatureView.getSignatureBitmap());

    IAPI iAPI = Application.getImage();
    Call<JSONObject> call = iAPI.uploadImage(image);

    call.enqueue(new Callback<JSONObject>() {
        @Override
        public void onResponse(Call<JSONObject> call, Response<JSONObject> response) {

            if (response.isSuccessful()) {
                Log.d("test" , "is succ");

                try {

                    JSONObject responseJSON = response.body();
                    Log.d("test" , responseJSON.toString());
                    String path = responseJSON.getString("path");
                    if (path == null) {
                        Log.d("test" , "path is null");
                    } else {
                        Log.d("test" , "path not null");
                    }
                } catch (JSONException e) {
                    Log.d("test" , e.toString());
                    e.printStackTrace();
                }

            } else {
                Log.d("test" , "not  succ");
            }
        }

        @Override
        public void onFailure(Call<JSONObject> call, Throwable t) {
            Log.d("test", " in onFailure  - load image :" + t.getMessage() + t.toString());
        }
    });




}

总是抛出一个异常,指出路径没有任何价值。 日志中的responseJSON.toString()会打印为空[]。

编辑:

我已经创建了自己的模型,其中包含名为imagePath的属性,现在它正在崩溃。谢谢大家

0 个答案:

没有答案