在做一个项目,本来在网页上用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吧?我改了得多次都不行,不知道是什么原因,求高手帮忙,谢谢!!!
$.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吧?我改了得多次都不行,不知道是什么原因,求高手帮忙,谢谢!!!
解决方案 »
- 数据同步到本地SQLite数据库上
- 如何利用shareuserid对不同包的Activity进行跳转?
- 利用ndk c/c++ 实现android短信部分功能
- 用数据流来存储数据为何报异常?模拟器提示强制关闭?
- ? - overridePendingTransition用旋转动画
- 关于layoutInflater.inflate(int id,ViewRoot root,boolean flag)
- RadioButton为什么没有setMargin属性
- 100分 MTK6572声音问题
- listview 平滑移动问题
- ActionBar的左侧添加一个按钮,求实现方法。。
- 编译android 4.0.3的时候出现错误。
- 【在线等】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 "";
}
}
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));