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

android -> jsp multipart 전송 문제입니다.ㅠㅠ

0 추천

안녕하세요..

 

안드로이드 어플리케이션 개발 중입니다!

 

안드로이드->jsp로 multipart를 이용하여 서버에 이미지를 저장하려고 합니다..

 

그런데 안드로이드->jsp로 multipart를 이용하여 이미지 전송과 저장은 되는데

jsp의 xml을 안드로이드에서 파싱(jdom)하는 부분에서 자꾸 오류가 발생합니다.. 원일을 아무리 찾아도 안나오네요ㅠㅠ

org.xml.sax.SAXParseException: Unexpected token (position:TEXT 다ì�� 경로에 파일이 저...@2:1 in java.io.InputStreamReader@430280e0) 

로그캣 오류 정보입니다ㅠㅠ
 

try {
username = new String(username.getBytes("UTF-8"),
"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
createQRCode(userid + "/" + userid);
URL url = new URL("http://192.168.1.2:8085/Paser/join.jsp");
String boundary = "SpecificString";
URLConnection con = url.openConnection();
((HttpURLConnection) con).setRequestMethod("POST");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
con.setDoOutput(true);
 
// 이미지 생성
 
//문자열 전송 시작    키  //  변수
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
 
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"userid\"\r\n\r\n" + userid);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"userpwd\"\r\n\r\n" + userpwd);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"username\"\r\n\r\n" + username);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"userhp\"\r\n\r\n" + userhp);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"useremail\"\r\n\r\n" + useremail);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"userbirth\"\r\n\r\n" + userbirth);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"usergender\"\r\n\r\n" + genderStr);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"usermode\"\r\n\r\n" + modeStr);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"userqr\"\r\n\r\n" + fos);
wr.writeBytes("\r\n--" + boundary + "\r\n");
wr.writeBytes("Content-Disposition: form-data; name=\"userqr\"; filename=\"image.jpg\"\r\n");
wr.writeBytes("Content-Type: application/octet-stream\r\n\r\n");
 
Log.i("xml parseraaaaaa", "testdir/" + testdir);
 
FileInputStream fileInputStream = new FileInputStream("/storage/emulated/0/MobilID/QRCODE.jpg");
//FileInputStream fileInputStream = new FileInputStream(testdir);
 
int bytesAvailable = fileInputStream.available();
int maxBufferSize = 1024;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[bufferSize];
int bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0)
{
// Upload file part(s)
DataOutputStream dataWrite = new DataOutputStream(con.getOutputStream());
dataWrite.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available(); 
bufferSize = Math.min(bytesAvailable, maxBufferSize); 
bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
}
fileInputStream.close();
 
wr.writeBytes("\r\n--" + boundary + "--\r\n");
wr.flush();
InputStream is = con.getInputStream();
// 파서 공장 생성
 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 
factory.setIgnoringElementContentWhitespace(true);
 
// 파서 생성
Log.i("xml parserddddddddd", "testdir/" + is);
 
DocumentBuilder parser = factory.newDocumentBuilder();
Document document = parser.parse(is);
Log.i("xml parserfffffff", "testdir/" + is);
 
// 문서에서 result, msg태그 중 0번째 요소를 반환
Element resultTag = (Element) document.getElementsByTagName("result").item(0);
Log.i("xml parser", "rtncode/" + rtncode);
Element msgTag = (Element) document.getElementsByTagName("msg").item(0);
 
// result, msg 태그의 첫번째 자식은 TEXT노드, getNodeValue() 메서드를 이용하여서
// 텍스트값 추출
rtncode = resultTag.getFirstChild().getNodeValue();
msg = msgTag.getFirstChild().getNodeValue();
Log.i("xml parser", "rtncode/" + rtncode);
Log.i("xml parser", "msg/" + msg);
 
} catch (Exception e) {
Log.e("Xml1", "예외 발생", e);
e.printStackTrace();
}
 
if (rtncode.equals("200")) {
// createQRCode(userid+"/"+userid);
 
Toast.makeText(UserJoin.this, "등록이 완료 되었습니다.",
Toast.LENGTH_SHORT).show();
Intent in = new Intent(UserJoin.this, LoginActivity.class);
startActivity(in);
}
 
// /////////////////////////////////////////////////
// Toast.makeText(UserJoin.this, "회원가입 되었을까요?",
// Toast.LENGTH_SHORT).show();
break;
case R.id.can:
Toast.makeText(UserJoin.this, "뒤로가기", Toast.LENGTH_SHORT)
.show();
finish();
}
}
안드로이드 소스입니다ㅠㅠ
 
 
 
Document document = new Document();
//root 노드 생성
Element root = new Element("join");
document.setRootElement(root);
 
//<result> 엘리먼트 생성 
Element element = new Element("result");
//노드에 내용 추가
element.addContent(rtncode);
//노드를 root에 추가
root.addContent(element);
 
//<msg> 엘리먼트 생성 
element = new Element("msg");
element.addContent(msg);
root.addContent(element);
System.out.println(msg+"//////"+rtncode);
//JDOM 문서를 바이트 문자열로 출력
XMLOutputter outputter = new XMLOutputter();
 
outputter.setFormat(Format.getPrettyFormat());//추가
//Format f = outputter.getFormat();
//f.setEncoding("UTF-8");
String returnxml = outputter.outputString(document);
%>
 
jsp 소스입니다..
 
오류 위치를 찾아보니 안드로이드의
Document document = parser.parse(is);
이 부분에서 오류가 발생합니다ㅠㅠ..왜 이럴까요??
setrequestproperty의 값이 multipart/form이라서 받아오는 게 xml이라서 안되는 것인지 잘 모르겠네요ㅠㅠㅠ
부탁드립니다ㅠㅠ

 

익명사용자 님이 2014년 3월 19일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...