Android 中传递 json 的问题
来源:互联网 发布:国金宝骗局知乎 编辑:程序博客网 时间:2024/06/04 00:29
原问题来自于CSDN问答频道,更多解决方案见:http://ask.csdn.net/questions/2520
问题描述:
我在开发一个程序,在 webpage 上使用jquery。
$.post(url, {param: paramstring}, function(result){});
根据参数结构,Paramstring 是一个 json字符串,如:{"action":"get","username":"username"}
现在我想在android中运行,再在页面上添加两个textview 来输入用户名和密码。也有一个注册按钮。按钮监听程序:
EditText et1 = (EditText)findViewById(R.id.username);String user = et1.getText().toString();EditText et2 = (EditText)findViewById(R.id.pass);String password = et2.getText().toString();// the password should upload after MD5 encryption. this is encryption method. the result is the same with js encryption.String password_md5 = toMd5(password.getBytes()); Log.d(TAG, user+"-"+password+"-"+password_md5);try {HttpPost request = new HttpPost(URL);JSONObject params = new JSONObject();params.put("action", "get");params.put("result", "user");params.put("category", "base");params.put("username", user);params.put("password", password_md5);List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();sendData.add(new BasicNameValuePair("param", params.toString()));System.out.println(params.toString());request.setEntity(new UrlEncodedFormEntity(sendData,"utf-8"));System.out.println(EntityUtils.toString(request.getEntity()));HttpResponse response= new DefaultHttpClient().execute(request);String retSrc = EntityUtils.toString(response.getEntity()); System.out.println(retSrc);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}
上面的代码返回数据显示登录错误,我觉得是因为 json 结构的问题。{param:paramstr} in $.post()
方法是一个map。我改了好几次还是错误的。
什么问题呢?
解决方案:
你应该分别传递每个参数,不需要一个 json 结构。 jQuery 使用的 JSON 结构只是 $.post() 方法中一个可变数目的参数。
把你代码中的这部分:
params.put("action", "get");params.put("result", "user");params.put("category", "base");params.put("username", user);params.put("password", password_md5);List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();sendData.add(new BasicNameValuePair("param", params.toString()));
改为:
List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();sendData.add(new BasicNameValuePair("action", "get"));sendData.add(new BasicNameValuePair("result", "user"));sendData.add(new BasicNameValuePair("category", "base"));sendData.add(new BasicNameValuePair("username", user));sendData.add(new BasicNameValuePair("password", password_md5));
用sendData list 取代 JSON 对象。
- Android 中传递 json 的问题
- Android数据传递中json的生成和解析
- handler中传递JSON数据的写法
- controller中接收JSP传递的JSON
- Ajax中传递Json格式的参数
- json传递数据问题
- Ext与struts在使用json传递中出现的问题
- 关于Android中Activity之间socket传递的问题
- Android中Intent传递对象的3种方式详解(Serializable、Parcelable、JSON)
- Android service传递的问题
- 解决json传递到前端时候的乱码问题;以及解决在servlet中如何输出页面的问题
- Android开发中遇到的json解析异常问题
- Android中post请求传递json数据给服务端
- android 中okhttp post请求传递json数据
- Android中AyncTask数据同步传递问题
- Android中Context的传递
- Android中事件的传递
- Android中对象的传递
- 新的开始
- 在Eclipse中导入jar文件(三)
- SAP工作流触发总结
- android ListView实现圆角
- 在Eclipse中导入jar文件(四)
- Android 中传递 json 的问题
- Excel合并多个单元格的内容。
- IIS 访问需要用户名和密码 (需要进行身份验证)
- 三种强大的物体识别算法——SIFT/SURF、haar特征、广义hough变换的特性对比分析
- Web.config配置详解
- StringUtils工具类用法
- Android开关机动画文件解释
- linux下adb及fastboot编译与使用
- stream