2
我有一個android應用程序,我試圖用它將一些數據傳遞給使用HTTPGet的webservice。如果我只是用JSONArray.toString()方法構造的字符串,我結束了,看起來像一個網址如下:編碼一個包含JSONArray的URL
http://xxx.xx.xxx.xx/api?method=upload&args[deviceID]=123456789&args[data]=["{element1=93295352, element2=235235, element3=3523523}","{element1=93295352, element2=235235, element3=3523523}"]
這不,因爲在URL中的空格和引號的工作。如果我attampt做類似如下:
JSONArray ja = new JSONArray();
// Add Data to JSONArray
String s = ja.toString();
// Add array to StringBuilder url
HTTPGet httpget = new HTTPGet(UrlEncoder.encode(url.toString()));
我得到拋出,因爲整個URL編碼得到一個錯誤,像這樣結束:
http%3A%2F%2Fxxx.xx.xxx.xx%2Fapi%3Fmethod%3Dupload%26args%5BdeviceID%5D%3D123456879%26args%5Bdata%5D%3D%5B%22%7Belement1%3D915156028000%2C+element2%3D1651651%2C+element3%3D489461%7D%22%2C%22
很顯然,這不是我m尋找,並有一個更好的解決方案比搜索/替換該網址的JSONArray部分中的所有必要的字符,但我想這樣做不會是一個巨大的麻煩,因爲我只是擔心報價和空間字符。
需要注意的是手工粘貼到瀏覽器這個返回的結果我想到:
http://xxx.xx.xxx.xx/api?method=upload&args[deviceID]=123456789&args[data]=[%22{element1=915156028000,%20element2=0.0,%20element3=2.297444}%22,%22{element1=915156055000,%20element2=0.0,%20element3=2.2974419999999998}%22]
謝謝。是的,我碰到了極限。如果我想使用POST來做同樣的事情,那麼最終是否必須以相同的方式對數據進行編碼? – wtollett 2010-09-25 03:14:02