我有一个应用程序,我使用短信提供程序发送短信到我的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
答案 0 :(得分:1)
显然,生成的URL中的空格导致了问题。简单地用百分比编码的值替换它们 - %20
- 似乎可以解决问题。
message = message.replace(" ", "%20");
如果您在邮件中包含除字母数字和基本标点符号以外的任何字符,则可能需要对整个String
进行网址编码。 URLEncoder
类在Android中可用,但它将空格编码为+
,因此您可能必须在编码后执行与上面类似的replace()
,我想象{{1}将在消息体中保持不变。