android-Android 中传递 json 的问题

问题描述

Android 中传递 json 的问题

我在开发一个程序,在 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 block
e.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 对象。

解决方案二:

Paramstring 是一个 json字符串,如:{"action":"get","username":"username"}

那样的话,格式不就变成了{param:{"action":"get"}...}
试一下这样传
$.post(url,paramstring, function(result){});

常用以下方法:

$.ajax({
url: 'stat.php',
type: 'POST',
data:{Name:"keyun"}, //or json data
dataType: 'html',      //json or xml for request data type
timeout: 1000,        //timeout
error: function(){alert('Error loading PHP document');},
success: function(result){alert(result);}  //callback foo
});
时间: 2025-01-30 17:31:34

android-Android 中传递 json 的问题的相关文章

java-在eclipse的android工程中包含.json本地文件

问题描述 在eclipse的android工程中包含.json本地文件 我有一个.json本地文件,我不想把它放到服务器上,我只是想把它包含在我的app中.我试着直接把它贴到eclipse我的工程中,但是我得到一个异常:FileNotFoundException,我也试着把它贴到windows Explorer/Finder的工作区文件夹中,也得到了同样的异常信息.我应该把它放哪? 谢谢 解决方案 你应该把文件夹直接放在你android工程的 /assets 或者是/res/raw里.你可以用C

探究Android系统中解析JSON数据的方式_java

前言喜欢在前言里讲一下自己的现状,或许能有共鸣的同学,更多的是留给自己一个纪念,几个月或者几年再回来看的时候还是会很有感慨.今天说说语言,json这种数据格式之前我做服务器端的时候天天接触,天真的以为json的世界里只有php的json_encode和json_decode,今天当我做客户端的时候,竟然将近一个多小时才搞定json的解析.这里我不是抨击php好坏,只是想说多学点东西,看看你不熟悉的领域,方能开阔自己的视野,方能知道天外有天,方能知道当初你看不上的工作其实你也不一定能很好的完成,扯

jquery ajax中传递json数据的例子

html代码如下:  代码如下 复制代码 <!doctype html> <html lang="en">  <head>   <meta charset="gbk">   <meta name="Generator" content="EditPlus">   <meta name="Author" content=""

arraylist-android开发中提交json到数据库时出现的问题

问题描述 android开发中提交json到数据库时出现的问题 public class Register_ extends Activity{ private EditText register_username; private EditText register_passwd; private EditText register_repasswd; private Button registerBt; private ProgressDialog pDialog; JSONParser j

解析json数据-android 开发中 json解析问题出错啊

问题描述 android 开发中 json解析问题出错啊 {"msg":1,"msgbox":"返回歌手分类!","data":"[ { "rownum":"11","id":"1047","userName":"敖日格勒","picurl":"mobile1_1047

值传递-Android 同一个activity中传递值

问题描述 Android 同一个activity中传递值 在同一activity中传递值,在网友的帮助下认识到如下的存取值方法 public static class HealthMap { private static Map map = new ConcurrentHashMap(); /** * 传值 * @param key * @param obj */ public static void put(String key, Object obj) { map.put(key, obj)

android中处理json最佳方法

在android中处理json,采用google的gson框架,gson是google开源的一个项目.只需将gson.jar导入项目中即可!暂时没找到上传附近的地方在哪里? 下面给出事例代码:     package com.achievo.vipshop.utils; import java.lang.reflect.Type; import java.util.LinkedList; import android.os.Debug; import android.util.Log; impo

Android中的JSON详细总结

  1.JSON(JavaScript Object Notation) 定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. – Json.org   2.JSON的结构:(1) Name/Value Pairs(无序的):类似所熟知的Keyed list. Hash table.Disc

用户权限-Android项目中怎么传递用户的登录信息

问题描述 Android项目中怎么传递用户的登录信息 我要建立一个android项目,这个项目中使用ksoap2调用webservice(我用的是axis2)中的方法,但在这个项目的apk应用过程中,我随时可能会用到登录人的信息对该登录人的权限进行判断,因此我需要一个容器来对登录人信息进行存储,类似于B/S架构中的session.有过相关项目经验的各位大神,能不能给我提一个解决方案,急用,在线等,大恩不言谢! 解决方案 在application中放一个静态成员变量保存登录人的信息AndroidM