안녕하세요
문자를 브로드캐스트로 받고 그걸 서버로 전송해 저장을 하려고하는데요 post방식으로 전달하고 싶은데..
오류가 나와서 질문 올렸습니다..
public void onReceive(Context $context, Intent $intent) {
Bundle bundle = $intent.getExtras();
System.out.println("bsj----------------------------------------------");
if (bundle == null)
return;
Object messages[] = (Object[])bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
Object[] pdus = (Object[]) bundle.get("pdus");
for(int i = 0; i < messages.length; i++) {
// PDU 포맷으로 되어 있는 메시지를 복원합니다.
smsMessage[i] = SmsMessage.createFromPdu((byte[])messages[i]);
}
// SMS 수신 시간 확인
Date curDate = new Date(smsMessage[0].getTimestampMillis());
Log.d("문자 수신 시간", curDate.toString());
System.out.println("bsj-------------------문자 수신 시간-------"+curDate.toString());
// SMS 발신 번호 확인
String origNumber = smsMessage[0].getOriginatingAddress();
System.out.println("bsj-------------------SMS 발신 번호 확인-------"+origNumber);
// SMS 메시지 확인
String message = smsMessage[0].getMessageBody().toString();
Log.d("문자 내용", "발신자 : "+origNumber+", 내용 : " + message);
System.out.println("bsj-------------------SMS 문자 내용-------"+message);
if (pdus == null)
return;
System.out.println("bsj----------------------------------------------2");
ArrayList<String> msgs = new ArrayList<String>();
String number = "";
for (int i = 0; i < pdus.length; i++) {
SmsMessage smsMsg = SmsMessage.createFromPdu((byte[]) pdus[i]);
number = smsMsg.getDisplayOriginatingAddress();
msgs.add(smsMsg.getDisplayMessageBody());
}
System.out.println("bsj----------------------------------------------3");
if (!TextUtils.isEmpty(number) && number.contains(";"))
number = number.split(";")[0];
if (!TextUtils.isEmpty(number))
number = number.trim().replaceAll("[^0-9]", "");
System.out.println("bsj----------------------------------------------4");
msg = TextUtils.join(" ", msgs);
System.out.println("bsj--------------------------"+number+"----"+msg);
Log.i("SMSReceiver.java | onReceive", "|" + number + "|" + msg);
//POST 방식으로 서버 전송..
new SendPost().execute();
}
private class SendPost extends AsyncTask<Void, Void, String> {
protected String doInBackground(Void... unused) {
String content = executeClient();
return content;
}
protected void onPostExecute(String result) {
// 모두 작업을 마치고 실행할 일 (메소드 등등)
}
// 실제 전송하는 부분
public String executeClient() {
String url;
ArrayList<NameValuePair> post = new ArrayList<NameValuePair>();
post.add(new BasicNameValuePair("msg",msg));
// 연결 HttpClient 객체 생성
HttpClient client = new DefaultHttpClient();
// 객체 연결 설정 부분, 연결 최대시간 등등
HttpParams params = client.getParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);
// Post객체 생성
HttpPost httpPost = new HttpPost("서버주소../mobile/db/smsSyncTime.php");
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(post,
"UTF-8");
httpPost.setEntity(entity);
client.execute(httpPost);
return EntityUtils.getContentCharSet(entity);
} catch (ClientProtocolException e) {
System.out.println("bsj---------------------------------err1-------------"+e);
e.printStackTrace();
} catch (IOException e) {
System.out.println("bsj----------------------------------err2------------"+e);
e.printStackTrace();
}
return null;
}
}
이렇게 프로그램 되어있구요.
문자를 읽어오는거 까진 확인이 되었습니다.
post 로 전달할때
08-20 18:29:32.669: I/System.out(16576): bsj----------------------------------err2------------org.apache.http.conn.HttpHostConnectException: Connection to 서버주소 refused
이렇게 나옵니다.
서버에 방화벽이나 접근을 제한하는건 없거든요..
잘못된 부분좀 지적부탁드립니다.. ㅜㅠ