2012-05-04 2 views
0

우리는 SMS를 보내는 Java 응용 프로그램을 가지고 있습니다. 우리는 2 개의 변수를 아래와 같이 설정합니다. 그러면 인코딩 과정을 거칩니다. 문제가 지금은 잘 작동하지만 & 시간 후 .... 메시지가 전달되지 않습니다? 그렇다면 다른 인코딩 메커니즘은 무엇을해야합니까?Ascii로 변환이 실패합니다 &

String smsMessage = "Asset:TEST1\nSerial ID:Test1\nEvent:Arrive\nDate&Time:2012-04-26 21:06:37\nEvent Location:Location1"; 
String fullMessageLink="user=tt1&password=tt11&api_id=2211&to=1234567&text="+smsMessage; 

URI uri = new URI(
     "http", 
     "api.clickatell.com", 
     "/http/sendmsg", 
     fullMessageLink, 
     null); 

String request = uri.toASCIIString(); 

답변

3

앰퍼샌드 &은 URL 매개 변수 사이의 구분 기호로 사용됩니다. fullMessageLink에있는 &'s에 주목하십시오. &으로 문자열을 전달하려면 URL encode 값이 필요합니다.

인코딩을 수행하려면 URLEncoder class을 사용하십시오.

+0

그래서이 smsMessage = URLEncoder.encode (smsMessage, "UTF-8"); 하지만 불행히도 SMS를 받으면 메시지에 모든 %가 표시됩니다. 그럼 어떻게 이걸 극복 할까? – user837306

+0

@ user837306 - 실마리가 없으므로 FAQ에서도 그렇게해야한다고 말합니다. http://support.clickatell.com/faq.php?mode=view_entry&kbid=213&kbcat=28 – shf301

+0

@ sh301 다음은 인코딩 된 메시지 및 텍스트 = 애셋입니다. % 253ATEST1 % 250ASerial + ID % 253ATest1 % 250AEvent % 253AArrive % 250ADate % 2526Time % 253A2012-04-26 + 21 % 253A06 % 253A37 % 250AEvent + 위치 % 253ALocation1 해당 줄 바꿈은 % 0A이지만 \ n은 % 250A를 사용합니다. 이것이 문제가 될 수도 있다고 생각하십니까? – user837306

관련 문제