2016-04-15 51 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(),因为我想+会在消息正文中经历不变。

相关问题