2016-04-15 67 views
1

我有一個應用程序,其中我使用短信提供程序發送短信到我的Android設備。 我發送以下形式的消息:從Java應用程序發送的短信不會出現在Android設備

message = "value: "+Float.toString(float1)+" and ratio: "+Float.toString(float2) 

我米使用jva.net庫和代碼是:

System.out.println("Sending sms"); 

InputStream response = null; 
URLConnection connection = null; 
try { 
    connection = new URL("https://somesmsprovider.com/sms/sms.jsp?user=user&password=pass&mobiles=xxxxxxxxxx&sms="+message).openConnection(); 
} catch (MalformedURLException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} catch (IOException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 

然而,我收到我的設備上什麼是公正的:「值:「

我想它與編碼有關。該提供商有一個選項來激活Unicode編碼,但這也沒有幫助。 有人有一個想法,爲什麼我不能正確顯示短信?

Thnks

+1

我們可以有完整的代碼嗎? –

+2

我想象它是導致問題的結果URL中的空格。嘗試用'%20'替換它們 - 'message = message.replace(「」,「%20」);'。 –

+1

嗨邁克,這就對了,謝謝!如果您發佈您的評論,作爲答案,我會標記它。 – panipsilos

回答

1

顯然,在產生的URL的空間都導致了問題。簡單地用它們的百分比編碼值替換它們 - %20 - 似乎可以做到。

message = message.replace(" ", "%20"); 

如果您在除字母數字和標點符號基本的其他信息的任何字符,則可能需要URL編碼整個StringURLEncoder類在Android中可用,但它編碼空間爲+,所以在編碼之後,您可能必須執行類似於上述的replace(),因爲我想+會在消息正文中經歷不變。

相關問題