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