0

Android モバイルからアプリケーション サーバーにデータを json として送信すると、フォロー エラーが発生します。しかし、PC ブラウザからデータを送信すると、アプリケーションは問題なく動作します。Androidブラウザからデータを送信するときにやらなければならないことはありますか?

Caused by: java.net.URISyntaxException: Illegal character in query at index 271: http://oracleapps.veeralab.com:8080/emyed-whiteboard/pubsub/27c95d04-9783-447b-b333-bcc7b3bbb6b7/01815406-7699-4c2c-ae4b-4eefdbbcbdf0.topic?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=1.0&X-Atmosphere-Transport=polling&X-Cache-Date=0&X-Atmosphere-Post-Body=message={%22action%22:%22joinName%22,%22parameters%22:%22usersName%22:%22veera,%20job,%20ram%22,%22timestamp%22:1349724088883,%22user%22:%22job%22,%22whiteboardId%22:%2227c95d04-9783-447b-b333-bcc7b3bbb6b7%22}&jsonpTransport=jQuery180031574026358131124_1349709680844
        at java.net.URI$Parser.fail(URI.java:2829) [rt.jar:1.7.0_05]
        at java.net.URI$Parser.checkChars(URI.java:3002) [rt.jar:1.7.0_05]
        at java.net.URI$Parser.parseHierarchical(URI.java:3092) [rt.jar:1.7.0_05]
        at java.net.URI$Parser.parse(URI.java:3034) [rt.jar:1.7.0_05]
        at java.net.URI.<init>(URI.java:595) [rt.jar:1.7.0_05]
        at java.net.URI.create(URI.java:857) [rt.jar:1.7.0_05]
4

1 に答える 1

0

無効な文字を削除するには、次のように URLEncoder または Uri 解析を使用します。

以下の情報から始めます

String BASE_URL = "http://oracleapps.veeralab.com:8080/emyed-whiteboard/pubsub/27c95d04-9783-447b-b333-bcc7b3bbb6b7/01815406-7699-4c2c-ae4b-4eefdbbcbdf0.topic"
String QUERY = "X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=1.0&X-Atmosphere-Transport=polling&X-Cache-Date=0&X-Atmosphere-Post-Body=message={%22action%22:%22joinName%22,%22parameters%22:%22usersName%22:%22veera,%20job,%20ram%22,%22timestamp%22:1349724088883,%22user%22:%22job%22,%22whiteboardId%22:%2227c95d04-9783-447b-b333-bcc7b3bbb6b7%22}&jsonpTransport=jQuery180031574026358131124_1349709680844"

URLエンコーダーを使用できます

String url = BASE_URL + "?" + URLEncoder.encode(QUERY, "utf-8");

または、Uri 解析を使用できます

String uri = Uri.parse(BASE_URL)
            .buildUpon()
            .appendQueryParameter("X-Atmosphere-tracking-id", "0")
            .appendQueryParameter("X-Atmosphere-Framework", "1")
            .appendQueryParameter("X-Atmosphere-Post-Body", "message={%22action%22:%22joinName%22,%22parameters%22:%22usersName%22:%22veera,%20job,%20ram%22,%22timestamp%22:1349724088883,%22user%22:%22job%22,%22whiteboardId%22:%2227c95d04-9783-447b-b333-bcc7b3bbb6b7%22}")
            ... //your other params
            .build().toString();

私の推奨事項は、Uri Parsing メソッドを使用して、エンコードされるべきではないものは何もエンコードされていないことを確認することですが、それでも有効な uri で終わるようにすることです。

于 2016-03-02T08:59:27.560 に答える