2016-04-15 14 views
1

私はアプリケーションを使用しています。私はsmsプロバイダを使用してAndroidデバイスにSMSを送信します。 は、私は次の形式のメッセージを送ります:Javaアプリケーションから送信されたSMSはアンドロイドデバイスに表示されません

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

私はjva.netライブラリとコードを使用して、Mは:しかし、私は私のデバイス上で受信することだけである

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エンコーディングを有効にするオプションがありますが、そのどちらも役に立ちません。 誰かが私がなぜSMSを正しく表示できないのか考えていますか?どうやらたURLにスペースが問題を引き起こしていた

+1

完全なコードがありますか? –

+2

私はそれが問題を引き起こしている結果のURLのスペースだと思います。それらを '%20' - ' message = message.replace( ""、 "%20"); 'に置き換えてみてください。 –

+1

こんにちはマイク、そうです、ありがとう!!!あなたがあなたのコメントを投稿したら、答えとして私はそれをマークします。 – panipsilos

答えて

1

Thnks

。パーセント符号化された値(%20)で置き換えるだけで、このトリックを行うようです。

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

あなたは英数字と基本的な句読点以外のメッセージ内の任意の文字を含める場合は、URLエンコード全体Stringする必要があります。 URLEncoderクラスはAndroidで利用できますが、空白は+とエンコードされていますので、+がメッセージ本文に変更されないと思いますので、上記のようにreplace()をエンコードした後に実行する必要があります。

関連する問題