本人最近在一个项目,后台用.net 写的,图个方便,后台的controller全都是ashx,web前端和安卓前端全都用一个接口,在连接时前端使用Jquery+Ajax+json来传数据。后台直接context.request["**"]就基本ok了,但是在安卓交互上,就无法取得数据;
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("name","hetong");
} catch (JSONException e) {
e.printStackTrace();
}
String userstr = "http://benchover.cn/controller/system/user.ashx?action=testJson";
String str = "";
RequestParams params = new RequestParams(userstr);
params.addParameter("json",jsonObject);
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
try {
JSONObject json = new JSONObject(result);
String rs = json.getString("result");
if(rs.equals("success")){
// Toast.makeText(NewGroupActivity.this, "成功", Toast.LENGTH_LONG).show();
String rs1=json.getString("name");
Toast.makeText(NewGroupActivity.this, rs1+"", Toast.LENGTH_LONG).show();
}else if(rs.equals("error")){
String errormsg=json.getString("errorMsg");
Toast.makeText(NewGroupActivity.this, ""+errormsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Toast.makeText(NewGroupActivity.this, "error"+ex.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
Toast.makeText(NewGroupActivity.this, "finish", Toast.LENGTH_SHORT).show();
}
});
我一直以为xUtils3是和Ajax一样,直接通过request key名就可以了,我通过断点找出安卓请求的url
发现传给后台的一个命名为json的字符串,所以我在后台将这个json字符串转换为jsonObject,就可以交互了!
string json = context.Request["json"];
JObject jo = (JObject)JsonConvert.DeserializeObject(json);
string name = jo["name"].ToString();
result = "{\"result\":\"success\",\"resultMsg\":" + name + "}";