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

안드로이드 메시지 전송오류

0 추천

안드로이드에서 문자를 추출하여 서버로 전송하는 걸 구현하고 있습니다.
Log를 찍어보면 폰에서는 이상이 없는데 서버쪽에서 받지를 못하고 있습니다.
나름대로 머리를 굴려 2가지 버전으로 테스트를 해보았지만 
모두 Null값이 나오거나 값을 아예 받지는 경우가 계속해서 발생하고 있습니다..
왜 이럴까요??
  public int unReadSMSMessage(String smsCount)
		 	   	 {
		 	   	  Uri allMessage = Uri.parse("content://sms");
		 	   	  ContentResolver cr = getContentResolver();
		 	   	  Cursor c = cr.query(allMessage, 
		 	   	        new String[] { "address","date", "body", "read", "reply_path_present"},
		 	   	        null, null, 
		 	   	        "date DESC limit "+smsCount);  

		 	   	  String string ="";
		 	   	  int count=c.getColumnCount();
		 	   	  while  (c.moveToNext() ) { 
		 	          String address = c.getString(0); 
		 	          long timestamp = c.getLong(1);
		 	          String strs = timeToString(timestamp);
		 	          String body = c.getString(2); 
		 	          String readStr = c.getString(3);
		 	          String replyStr = c.getString(4);
		 	   	      if (replyStr != null ) {
		 	   	    	replyStr = "수신";
		 	   	      } else {
		 	   	    	replyStr = "발신";
		 				}
		 	       	   string = String.format(
		 	       	   	   		" address:%s, " +
		 	       	   	        " timestamp:%d, " +
		 	       	   	        " body:%s,"+
		 	       	   	        " reply_path_present:%s,"+
		 	       	   	        " read:0,"
		 	       	   	        ,  address, timestamp, body,readStr,replyStr);
		 	       	   	   Log.d("maluchi", ++count +"st, Message: "+string);
		 	       	HashMap<String, String> data = new HashMap<String, String>();
					data.put("imei", getDeviceId());
					data.put("callNumber", address);
					data.put("smsTime", strs);
					data.put("smsContent",body);
					data.put("smsType",replyStr);
					data.put("currTime",getCurrentTime());
					
					data.put("reqTime",paramOneValueStr);
					AsyncHttpPostD asyncHttpPost = new AsyncHttpPostD(data);
					asyncHttpPost.execute("http://username.cafe24.com/add/addSmsboxCosS.jsp");
		 	      	}
		 	         
		 	   	  
		 	   	  
		 	   	  return 0;
		 	   	 }
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*,javax.naming.*,java.util.Date" %>    
<%
 request.setCharacterEncoding("UTF-8");
 String phoneNumStr = request.getParameter("imei");
 String smsInOutStr = request.getParameter("smsInOut");
 String smsFromStr = request.getParameter("smsFrom");
 String smsDateStr = request.getParameter("smsDate");
 String smsContentsStr = request.getParameter("smsContents");
  String currTimeStr = request.getParameter("currTime");
  String reqTimeStr = request.getParameter("reqTime");
  if(phoneNumStr != null || smsInOutStr != null || smsFromStr != null ||  smsDateStr != null ||  smsContentsStr != null){
		log("1"+smsInOutStr);
	  	log("2"+smsFromStr);
	  	log("3"+smsFromStr);
	  	log("4"+smsDateStr);
	  	log("5"+smsContentsStr);
	  	log("6"+reqTimeStr);	
	 }
///sql   

	 Connection con = null;
	 Statement stmt = null;
	 ResultSet rs = null;
	 String jdbcUrl ="jdbc:mysql://localhost/username";
	 String dbUser = "username";
	 String dbPass = "password";
	 try {
	     con = DriverManager.getConnection(jdbcUrl, dbUser, dbPass);
	 } catch(SQLException e) {
	     out.println("mysql connection error!");
	     return;
	 }
	try {
		stmt = con.createStatement();
		  String query="insert into user"+phoneNumStr+"Smsbox(smsInOut, smsFrom, smsDate, smsContents,currTime,reqTime) values('"+smsInOutStr+"','"+smsFromStr+"','"+smsDateStr+"','"+smsContentsStr+"','"+currTimeStr+"','"+reqTimeStr+"');" ;
		// String query="insert into user"+phoneNumStr+"Callist( callDuration ) values('"+callDurationStr+"');" ;
		log(query);
		
		out.print(query);
		
		  stmt.executeUpdate(query);		  
		
			} catch(SQLException e ) {
		out.println(e.toString());
	}
	try {
		if(rs !=null) rs.close();
		if(stmt != null) stmt.close();
		if(con != null) con.close();
	} catch(SQLException e) {
		out.println(e.toString());
	}      

%>
		 	 	 	 	 	 	 
 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<%@ page import="java.io.*,java.util.*,java.sql.*,javax.naming.*,java.util.Date" %>    
<%@ page import="com.oreilly.servlet.*, com.oreilly.servlet.multipart.*" %>

<%
 request.setCharacterEncoding("UTF-8");
    // 먼저 파일이 저장될 서버의 실제 폴더 경로를 구합니다.. ServletContext 객체를 이용합니다.
    String realFolder = "";
    // webApps 상의 폴더명입니다.. 이 폴더에 해당하는 실제 경로를 찾아서  realFolder 로 매핑시킵니다.
    String saveFolder = "";
    String charset = "UTF-8";
    int maxSize = 10 * 1024 * 1024;
    
    realFolder = this.getServletContext().getRealPath(saveFolder);
    String fileNames = "";
    String mImeiStr = "";
    String mCallNumberStr = "";
    String mSmsTimeStr = "";
    String mSmsContentStr = "";
    String mSmsTypeStr = "";
    String mCurrTimeStr = "";
					         
            
     try {
        // 이제부터 multipartRequest 객체를 이용해서 파일을 업로드 합니다.

     MultipartRequest multi = new MultipartRequest(request,realFolder,maxSize,charset,new DefaultFileRenamePolicy());
     // multi 객체를 이용하여 전송된 내용을 받아온다.
   
    if (multi.getParameter("imei") != null) {
         String imeiStr = multi.getParameter("imei");
         mImeiStr = imeiStr; 
         out.println("imeiStr : " + imeiStr);
         log("imeiStr : " + imeiStr);
         
    }
    if (multi.getParameter("callNumber") != null) {
          String callNumberStr = multi.getParameter("callNumber");
          mCallNumberStr = callNumberStr;
         out.println("callNumberStr : " + callNumberStr);         
                  log("callNumberStr : " + callNumberStr);
    }
    if (multi.getParameter("smsTime") != null) {
          String smsTimeStr = multi.getParameter("smsTime");
          mSmsTimeStr = smsTimeStr;
          out.println("smsTimeStr : " + smsTimeStr);
                   log("smsTimeStr : " + smsTimeStr);
     }
    if (multi.getParameter("smsContent") != null) {
          String smsContentStr = multi.getParameter("smsContent");
          mSmsContentStr = smsContentStr;
          out.println("callTypeStr : " + smsContentStr);
                   log("smsContentStr : " + smsContentStr);
    }
    if (multi.getParameter("smsType") != null) {
          String smsTypeStr = multi.getParameter("smsType");
          mSmsTypeStr = smsTypeStr;
          out.println("callDateStr : " + smsTypeStr);
                   log("smsTypeStr : " + smsTypeStr);
          
    }
    if (multi.getParameter("currTime") != null) {
          String currTimeStr = multi.getParameter("currTime");
          mCurrTimeStr = currTimeStr;
                  out.println("currTimeStr : " + currTimeStr);
                           log("currTimeStr : " + currTimeStr);
    }
    	 ///sql   
		 Connection con = null;
		 Statement stmt = null;
		 ResultSet rs = null;
		 String jdbcUrl ="jdbc:mysql://localhost/username";
		 String dbUser = "username";
		 String dbPass = "password";
		 try {
		     con = DriverManager.getConnection(jdbcUrl, dbUser, dbPass);
		 } catch(SQLException e) {
		     out.println("mysql connection error!");
		     return;
		 }
		try {
		
			stmt = con.createStatement();
			  String query="insert into user"+mImeiStr+"Smsbox (smsInOut, smsFrom, smsDate, smsContents,currTime) values('"+mSmsTypeStr+"','"+mCallNumberStr+"','"+mSmsTimeStr+"','"+mSmsContentStr+"','"+mCurrTimeStr+"');" ;


			 out.println(query);
			 
	
			stmt.executeUpdate(query);
			
				} catch(SQLException e ) {
			out.println(e.toString());
		}
		try {
			if(rs !=null) rs.close();
			if(stmt != null) stmt.close();
			if(con != null) con.close();
		} catch(SQLException e) {
			out.println(e.toString());
		}
	


               
    } catch (Exception e) {
        e.printStackTrace();
    }
   
%> 
	



 

 

박하사탕2 (140 포인트) 님이 2013년 6월 7일 질문

1개의 답변

0 추천
안드로이드 상에서 아무런 이상이 없으시다면 JSP 쪽 문제 인거같은데요..

일단 쿼리를 DB에서 아무런 이상없는 쿼리인지 찍어보시구요..

안드로이드에서 PARAMETER 값이 제대로 전송되는지 여부 먼저 확인하시며 어느부분에서 문제가 생기는지 알수 있을듯하네요

JSP쪽에서 PARAMETER값도 다 넘어온다면,

execute 부분 확인해보셔요.

참고 소스요

String sql = "INSERT INTO 테이블 명 VALUES(?,?,?,sysdate"
    + ",null,?,?,?,null,?,sysdate,?,sysdate,?,?"
    + ",?,?,null,null,null,null)";

  pstmt = con.prepareStatement(sql);

  pstmt.setString(1, 파라미터값);
  pstmt.setString(2, 파라미터값);
  pstmt.setString(3, 파라미터값);
  pstmt.setString(4, 파라미터값);
  pstmt.setString(5, 파라미터값);
  pstmt.setString(6, 파라미터값);
  pstmt.setString(7, 파라미터값);
  pstmt.setString(8,파라미터값);
  pstmt.setString(9, 파라미터값);
  pstmt.setString(10, 파라미터값);
  pstmt.setString(11, 파라미터값);
  pstmt.setString(12, 파라미터값);

  pstmt.executeUpdate();
안드로메다개발자 (8,830 포인트) 님이 2013년 6월 7일 답변
안드로메다개발자님이 2013년 6월 7일 수정
06-07 12:49:40.857: D/Sending Data Check(22358): 2013-06-07 11:43:26
06-07 12:49:40.867: D/Sending Data Check(22358): 2013-06-07 11:38:55
06-07 12:49:40.877: D/Sending Data Check(22358): 2013-06-06 22:57:24
06-07 12:49:40.877: D/Sending Data Check(22358): 2013-06-06 22:56:56

로그처럼 추출은 제대로 됩니다...그런데 서버에서 받는 부분이 계속 널값이 나오거나 아예 받지를 못하네요 ㅠㅠ
파라미터 값은 다넘어가나요 ?
쿼리는 확인해보셨어요 ?
...