수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
server에서 이미지를 받는데 에러나 나서 업로드가 불가합니다.
저번 질문에서 이어서 google drive에 작성된 코드를 업로드 하였네요. 코드 확인하시고 문제상황을 알려주셨으면 합니다.
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
실무에서는 액션바보다 툴바를 더 많이 쓰나요?
그렇다면 툴바의 추가적인 어떤 기능 때문에 그러는지도 알고 싶습니다.
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
server에서 이미지를 받는데 에러나 나서 업로드가 불가합니다.
이전 질문에서 답변준 내용에 맞춰서 진해하였는데도 동일한 문제가 발생하네요 일단 sdk 버전을 28로 변경후에 진행하였으나 동일한 오류가 발생하고, 29인 경우 requestLegacyExternalStorage 속성을 true로 변경했는데도 해결이 안되네요 본문 예제와 같이 sdk버전을 27로 변경하려고 했으나 에러발생으로 싱크가 안되서 28로 진행하였으나 해결이나 변화는 전혀 없네요 client Thread는 다음과 같이 작성되었습니다. var client = OkHttpClient()var request_builder = Request.Builder()var url = request_builder.url("http://172.30.1.18:8080/MobileServer/upload.jsp")var multipart_Builder = MultipartBody.Builder()var file = File(pic_path)multipart_Builder.addFormDataPart("mobile_img",file.name,RequestBody.create(MultipartBody.FORM, file))var body = multipart_Builder.build()var post = url.post(body)var request = post.build()client.newCall(request).execute() client쪽은 에러 메세지가 다음과 같이 뜹니다. E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1 server 코드는 다음과 같이 작성되었습니다. <%@ page import="com.oreilly.servlet.*" %> <%@ page import="com.oreilly.servlet.multipart.*" %> <%@ page import="com.oreilly.servlet.MultipartRequest"%> <% request.setCharacterEncoding("utf-8"); String path = getServletContext().getRealPath("upload"); System.out.println(path); int max = 1024 * 1024 * 100; DefaultFileRenamePolicy policy = new DefaultFileRenamePolicy(); System.out.println(request.getContentType()); new MultipartRequest(request, path,max,"utf-8",policy); %> 서버쪽 에러는 다음과 같이 뜨고 있습니다. Stacktrace: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:505) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: java.io.IOException: Posted content type isn't multipart/form-data at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:130) at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:94) at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:219) at org.apache.jsp.upload_jsp._jspService(upload_jsp.java:138) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477) ... 25 more
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
server에서 이미지를 받는데 에러나 나서 업로드가 불가합니다.
client Thread는 다음과 같이 작성되었습니다. var client = OkHttpClient()var request_builder = Request.Builder()var url = request_builder.url("http://172.30.1.18:8080/MobileServer/upload.jsp")var multipart_Builder = MultipartBody.Builder()var file = File(pic_path)multipart_Builder.addFormDataPart("mobile_img",file.name,RequestBody.create(MultipartBody.FORM, file))var body = multipart_Builder.build()var post = url.post(body)var request = post.build()client.newCall(request).execute() client쪽은 에러 메세지가 다음과 같이 뜹니다. E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1 server 코드는 다음과 같이 작성되었습니다. <%@ page import="com.oreilly.servlet.*" %> <%@ page import="com.oreilly.servlet.multipart.*" %> <%@ page import="com.oreilly.servlet.MultipartRequest"%> <% request.setCharacterEncoding("utf-8"); String path = getServletContext().getRealPath("upload"); System.out.println(path); int max = 1024 * 1024 * 100; DefaultFileRenamePolicy policy = new DefaultFileRenamePolicy(); System.out.println(request.getContentType()); new MultipartRequest(request, path,max,"utf-8",policy); %> 서버쪽 에러는 다음과 같이 뜨고 있습니다. Stacktrace: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:505) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: java.io.IOException: Posted content type isn't multipart/form-data at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:130) at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:94) at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:219) at org.apache.jsp.upload_jsp._jspService(upload_jsp.java:138) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477) ... 25 more
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
server에서 이미지를 받는데 에러나 나서 업로드가 불가합니다.
client Thread는 다음과 같이 작성되었습니다. var client = OkHttpClient()var request_builder = Request.Builder()var url = request_builder.url("http://172.30.1.18:8080/MobileServer/upload.jsp")var multipart_Builder = MultipartBody.Builder()var file = File(pic_path)multipart_Builder.addFormDataPart("mobile_img",file.name,RequestBody.create(MultipartBody.FORM, file))var body = multipart_Builder.build()var post = url.post(body)var request = post.build()client.newCall(request).execute() server 코드는 다음과 같이 작성되었습니다. <%@ page import="com.oreilly.servlet.*" %> <%@ page import="com.oreilly.servlet.multipart.*" %> <%@ page import="com.oreilly.servlet.MultipartRequest"%> <% request.setCharacterEncoding("utf-8"); String path = getServletContext().getRealPath("upload"); System.out.println(path); int max = 1024 * 1024 * 100; DefaultFileRenamePolicy policy = new DefaultFileRenamePolicy(); System.out.println(request.getContentType()); new MultipartRequest(request, path,max,"utf-8",policy); %>
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
server에서 이미지를 받는데 에러나 나서 업로드가 불가합니다.
예제와 동일하게 따라하는데 다음과 서버에서 아래와 같은 에러가 나오고 있네요 Caused by: java.io.IOException: Posted content type isn't multipart/form-data request를 받는데는 문제가 없으며 request에서 받은 데이터 타입은 multipart/mixed; boundary=5b0bb2e2-e6b2-47ab-a8de-fff4aace9d8f과 같이 뜨는 것으로 확인됩니다. multipart로 동일한 코드로 작성하여 올렸는데 다음과 같은 에러가 발생하여서 다음으로 진행할 수가 없네요
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
manifest provider 코드 오류
카메라 동작에서 manifest provider를 동영상과 동일하게 작성하려고 하니 코드상에 에러가 뜹니다. authorities에서 작성 예도 뜨지 않으며 name에서도 android. support가 있지 않아 작성이 어렵고 다음코드 및 다음 예제 진행이 어렵네요 authorities 내용은 softcampus.~~로 작성하는데 이 내용도 틀리기에 작성이 안되고 오류가 뜹니다. authorities와 name을 어떤걸 참고해서 작서해야 하는지 검색에도 안나오네요
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
앨범에서 사진가져오기 android 10.0 Q 버전에서는 안됩니다.
9.0버전에서는 동작되는거 확인했습니다. 버전문제인것 같은데요. 단말기 , 에뮬 둘다 사진을 가져오지 못합니다. 사진을 가져오지 못하네요. 혹시 10.0 에서는 변경된 점이 있나요? 있다면 해결방안도 알려주세요. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if(resultCode == RESULT_OK){ var c = contentResolver.query(data?.data, null, null, null, null) c.moveToNext() var index = c.getColumnIndex(MediaStore.Images.Media.DATA) var source = c.getString(index) var bitmap = BitmapFactory.decodeFile(source) bitmap = resizeBitmap(1024, bitmap) imageView.setImageBitmap(bitmap) var degree = getDegree(source) imageView.rotation = degree }} data?.data 부분에서 빨간줄생깁니다.
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
okhttp api사용에서 callback함수 오류
build.gradle에서 implementation한 okhttp api는 implementation "com.squareup.okhttp3:okhttp:4.4.0" 위 버전으로 진행하였는데 현재 버전에서 버전 차이로 인한 문제인지 callback함수에서 response 호출에 에러가 발생하네요 어찌 해서 다른 방식으로 호출하는 방식을 찾긴 하였는데 다른 방식은 response에 받은 http string에서 body 값을 받아 오진 못하는 문제가 발생하여서 일단은 전체 과정을 스탑한 상태이네요 inner calss로 callback을 만들때 okhttp api의 callback함수를 생성하여 과정과 동일하게 호출하였는데 앱 중단이 뜨고 내부 쓰레드에서의 앱중단이니 아마 Main UI에서 충돌 문제로 인해서 발생한다고 생각하는데 원인을 찾을 수 없네요. callback, response에서도 response에 body를 호출하는 방식도 강의와 동일한 방식으로 진행할 경우 신텍스 에러가 뜨고 있어서 사용하지 못하고 있네요 다른 방식으로 body에 string을 result로 받아서 진행을 하여도 동일한 에러가 발생합니다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { view-> var thread = NetworkThread() thread.start() }}inner class NetworkThread : Thread(){ override fun run() { var client = OkHttpClient() var builder = Request.Builder() var url = builder.url("http://google.com") var request = url.build() var cb = Callback2() client.newCall(request).enqueue(cb) /* client.newCall(request).execute().use{ response-> if(!response.isSuccessful) throw IOException("Unexpected code $response") else { for ((name, value) in response.headers) { Log.d("header", value) } var result =response.body!!.toString() Log.d("result", result) val responseBodyString = response.body!!.string() runOnUiThread { textView.text = response.body!!.string() } } } //client.newCall(request).enqueue(callback) */ }}inner class Callback2 : Callback{ override fun onResponse(call: Call, response: Response) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. var result = response.body!!.string() runOnUiThread { //textView.text = result textView.setText(result) } } override fun onFailure(call: Call, e: IOException) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. }}inner class Callback1 :Callback{ override fun onResponse(call: Call, response: Response) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } override fun onFailure(call: Call, e: IOException) { }}
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
FCM 강좌들으며 하는 도중에 JSP 오류가 발생하는데 답변부탁드립니다!
스크린샷 처럼 오류가 발생하는데 원인이 뭔지 모르겠습니다.
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
강의자료가 갑자기 없어졌어요
강의자료가 갑자기 없어져서 받을 수가 없어요ㅜㅜ
- 미해결코틀린 기반 안드로이드 앱개발 고급 3단계
강의 내용 그대로 따라하고 실습해보았는데 가상머신이 강제종료됩니다
...