마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 php 전송 에러 코드 302

0 추천

안드로이드에서 php 로 json 혹은 ArrayList, 혹은 String 을 통해서 보내려고 하는데 에러가 뜹니다.

갤러리에서 사진을 받아서 (2장 ~ 10장) uri를 구한 후, Base64로 인코딩을 한 후 ArrayList나 Json에 넣어서 php로 보내려고 하는데,

1장은 잘 들어가는게 확인이 되는데 2장 이상이면 에러가 납니다.

 

아래는 base64로 인코딩해서 arraylist에 넣는 코드이고,

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();

String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
encodedImageArrayList.add(encoded);

여기는 StringRequest로 php로 전송하는 코드입니다.

map.put("images" , image.toString());
NewbHoony (210 포인트) 님이 2021년 12월 30일 질문

1개의 답변

+1 추천
 
채택된 답변

 Http 302코드의 정의가 위키에는

The HTTP response status code 302 Found is a common way of performing URL redirection. The HTTP/1.0 specification (RFC 1945) initially defined this code, and gave it the description phrase "Moved Temporarily" rather than "Found".

이미지를 전송한 URL이 어떤 이유로 redirection이 되었다는 걸로 추측해 볼 때, 서버에서 해당 요청을 다른 URL로 넘겼거나 했을 것 같은데요. 서버에서 해당 요청에 대해 어떻게 처리하고 있는지 자세히 체크를 해보셔야 할 것 같은데요.

추가적으로,

An HTTP response with this status code will additionally provide a URL in the header field Location. This is an invitation to the user agent (e.g. a web browser) to make a second, otherwise identical, request to the new URL specified in the location field. The end result is a redirection to the new URL.

헤더에 옮겨진  URL의 위치가 들었다고 하니까, 이 부분도 확인을 해보세요.

spark (224,800 포인트) 님이 2021년 12월 30일 답변
NewbHoony님이 2021년 12월 31일 채택됨
확인해 본 결과 ArrayList를 php에서 받을 때,
$Images = $_POST["images"];

이렇게 받으면 안되는건가요?
제가 PHP 개발자가 아니어서, PHP가 어떻게 처리하는지는 답을 드릴 수가 없네요.
근데, 궁금한게 PHP에서 json decoding이 지원이 될텐데 굳이 위처럼 값을 보내고 읽으시는 이유가 있나요? JSON포맷으로 처리하시면 심플해질 듯한데.
JSON 으로 안드로이드에서 ArrayList 데이터들을 파싱하고 보내도 같은 에러가 나서요.
JSON으로 간단한 배열이나 문자열을 주고 받는 예제를 테스트해 보세요. 그게 잘 동작한다면 일단, 데이터 주고 받는 부분에 문제가 없는거지만, 거기서 막히신다면, 일단 그 부분을 해결하셔야 겠죠. 서버쪽 문제인지 안드로이드 쪽 문제인지부터 확인하는게 좋을 것 같습니다.
...