android 发送json的问题

singwtwww 2012-12-26 04:11:47
在做一个项目,本来在网页上用jquery写的
$.post(url, {param: paramstring}, function(result){});//url不方便贴出,不用考虑,是对的
其中paramstring 是根据参数构造的json字符串,形如{"action":"get","username":"username"}
现在要改在android上运行,界面上添加一两个文本框用来输入用户名和密码,还有一个登录按钮
按钮的监听程序如下:
EditText et1 = (EditText)findViewById(R.id.username);
String user = et1.getText().toString();
EditText et2 = (EditText)findViewById(R.id.pass);
String password = et2.getText().toString();
//密码需要在本地进行md5加密后再上传,这个是加密方法,验证过跟在js上加密得到的结果是一样的
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时出了问题,$.post()方法中{param:paramstr}是一个map吧?我改了得多次都不行,不知道是什么原因,求高手帮忙,谢谢!!!
...全文
204 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-12-27
  • 打赏
  • 举报
回复
哦,真的是加密算法弄错了,检查时只看了开头和结尾是一样的,仔细看中间,就差了一个字母,改用了你的算法,其他的没有问题,不过也谢谢1,2 楼
问答小助手 2012-12-27
  • 打赏
  • 举报
回复
把下面的代码:
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));
zhgq2134 2012-12-26
  • 打赏
  • 举报
回复
估计是加密的问题 在服务短和Android 可能不一样 //MD5加密,32位 public static String MD5(String str){ MessageDigest md5 = null; try{ byte[] byteArray = str.getBytes("utf-8"); md5 = MessageDigest.getInstance("MD5"); // char[] charArray = str.toCharArray(); // byte[] byteArray = new byte[charArray.length]; // for(int i = 0; i < charArray.length; i++){ // byteArray[i] = (byte)charArray[i]; // } byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for( int i = 0; i < md5Bytes.length; i++){ int val = ((int)md5Bytes[i])&0xff; if(val < 16){ hexValue.append("0"); } hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); }catch(Exception e){ e.printStackTrace(); return ""; } }
susuifeng 2012-12-26
  • 打赏
  • 举报
回复
在android里post的参数不是用json发的吧.看看这个http://sensen.blog.51cto.com/1645588/570494
钢铁的群狼 2012-12-26
  • 打赏
  • 举报
回复
首先检查编码是不是正常,然后最好用urlencode一下再传,web那边在decode一下

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧