안드로이드에서 문자를 추출하여 서버로 전송하는 걸 구현하고 있습니다.
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();
}
%>