안드로이드 volley라이브러리를 통해서 프로필 이미지와 상태를 서버에 전송하는 기능을 개발중인데요 response값이 한칸 개행되서 값이 들어옵니다.

조회수 2570회

upload.php

<?php

@header('Content-Type:text/html; charset=UTF-8');

if($_SERVER['REQUEST_METHOD']=='POST'){

$image = $_POST['image'];
$msg = $_POST['msg'];
$ext = $_POST['extension'];
$email = $_POST['email'];

require_once('dbConnect.php');

$query = "SELECT name FROM member_plug where id='$email'";
$res = mysqli_query($con,$query);
$row = mysqli_fetch_array($res);
$name = $row['name'];

$query1 = "SELECT primary_num FROM member_plug where id='$email'";
$res = mysqli_query($con,$query1);
$row1 = mysqli_fetch_array($res);
$id = $row1['primary_num'];

$path = "profileImage/$name.$ext";
$actualPath = "http://rkdanswns88.esy.es/plug/$  path";

$query = "UPDATE member_plug SET profile_image = '$actualPath', profile_msg = '$msg' WHERE primary_num=$id";

if(mysqli_query($con,$query)){
    file_put_contents($path,base64_decode($image));
    echo trim("added complete!");
}

mysqli_close($con);
}else{
echo trim("Error");
}
?>  

이다음에 안드로이드에서 upload.php사이트를 연결합니다.

private void uploadImg(){
    final ProgressDialog dialog = ProgressDialog.show(this,"업로드중.. 잠시만 기달려주세요","Uploading",false);
    StringRequest req = new StringRequest(Request.Method.POST, UPLOAD_URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            dialog.dismiss();
            if(response.equals("Successful")){
                Toast.makeText(SettingProfileActivity.this, "프로필 설정을 완료하였습니다.", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(SettingProfileActivity.this,AfterLogin.class);
                startActivity(intent);
                finish();
            }else if(response.equals("Error")){
                Toast.makeText(SettingProfileActivity.this, "에러 발생, 어플리케이션 종료 후, 다시 시작하세요", Toast.LENGTH_SHORT).show();
            }
        }
    },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    dialog.dismiss();
                    Log.e("ERR",error.getMessage().toString());
                    Toast.makeText(SettingProfileActivity.this, error.getMessage().toString(), Toast.LENGTH_SHORT).show();
                }
            }){
        @Override
        protected Map<String,String> getParams() throws AuthFailureError {

            String image = getStringImg(bitmap);
            String ext = EXT_STR;
            String email = PreferencesUtil.getPreferences(SettingProfileActivity.this,"email");
            String name = inputProfile.getText().toString().trim();

            Map<String,String> params = new Hashtable<String,String>();

            params.put(KEY_IMG,image);
            params.put(KEY_MSG,name);
            params.put(KEY_EXT,ext);
            params.put(KEY_EM,email);

            return params;
        }
    };

    RequestQueue queue = Volley.newRequestQueue(this);

    queue.add(req);
}

통신은 성공적으로 되고, 데이터 전송도 성공적으로 되는데,

        public void onResponse(String response) {
            dialog.dismiss();
             if(response.equals("Successful")){
                Toast.makeText(SettingProfileActivity.this, "프로필 설정을 완료하였습니다.", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(SettingProfileActivity.this,AfterLogin.class);
                startActivity(intent);
                finish();
            }else if(response.equals("Error")){
                Toast.makeText(SettingProfileActivity.this, "에러 발생, 어플리케이션 종료 후, 다시 시작하세요", Toast.LENGTH_SHORT).show();
            }
        }

여기에서 php의 output값을 응답값으로 받는 저 onResponse의 인자로 들어온 response값에 따른 경우들의 코드가 작동하지를 않습니다. 혹시나해서 editText로 값을 일부러 들어오게 하였더니 response값이 문자 끝에서 한칸 더 개행이 되어서 출력이 되게 됩니다. 혹시나해서 php에 trim함수를 써서 개행을 없애보려했지만 소용이 없습니다. 이게 무슨문제인가요..?

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)