无法在 Android 中使用 Aquery 获取 JsonObject 值
Cannot get JsonObject value using Aquery in Android
使用这种方法 https://code.google.com/p/android-query/wiki/AsyncAPI ,我编写了这段代码以从 api[=33 获取 json 数据=],却得到 null
,为什么?
是这段代码有问题还是方法有问题?
//获取代码
public static void fetchCodeData(Context context2) {
AQuery aQuery = new AQuery(context2);
if(CheckInternetConnection.isConnectingToInternet()) {
aQuery.ajax(url, null, JSONObject.class, getGrandCodeCallback());
}
}
和
private static AjaxCallback<JSONObject> getGrandCodeCallback() {
return new AjaxCallback<JSONObject>() {
private String accessCode;
@Override
public void callback(String url, JSONObject object, AjaxStatus status) {
// get data here
Log.e("Object", "object=" + object.toString());
if (object != null) {
try {
accessCode = object.getJSONObject("data").getString("code");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}.header("Content-Type", "application/json; charset=utf-8")
.header(Client_ID, Client_ID)
.header(Client_SECRET, Client_SECRET);
}
正在拜访 java class activity :
fetchCodeData(getApplicationContext());
Log.e("getCallback",
"AllOverApplicationVariable.accessCode==="
+ AllOverApplicationVariable.accessCode);
输出看起来像这样,在方法调用后 return null 但再次调用方法并获得 json 值?我不知道 ?为什么会这样?
06-16 17:58:29.196: E/getCallback(12435):
AllOverApplicationVariable.accessCode===null
06-16 17:58:30.202: E/Object(12435):
object={"data":{"state":"","scope":"","expires":"2015-06-17
17:58:30","code":"69e11cfb3243244da5dc6b0aac1515569c06d2d2","response_type":"code","client_id":"1","redirect_uri":"http://localhost/eads"}}
AQuery 支持多部分 post,例如将图像上传到服务。简单地做一个常规的 POST 并放入字节数组,Inputstream
你能指出我的错误吗,我哪里做错了。
@BB:你的最终代码应该是,
public static void fetchCodeData(Context context2) {
AQuery aQuery = new AQuery(context2);
if(CheckInternetConnection.isConnectingToInternet()) {
aQuery.ajax(url, AllOverApplicationVariable.accessCode, getGrandCodeCallback());
}
}
也许这会奏效。
使用Aquery从服务器获取数据很简单。如果您使用 header 和参数,则执行此操作:
确保清单中包含以下权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
以及您必须实施的代码,
AQuery aQuery = new AQuery(mcontext);
Map<String, Object> params = null;
JSONObject mainJson = new JSONObject();
try {
// this is paramters
mainJson.put("username", "jack");
mainJson.put("pwd", "jack");
StringEntity sEntity = new StringEntity(mainJson.toString(), HTTP.UTF_8);
params = new HashMap<String, Object>();
params.put(AQuery.POST_ENTITY, sEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
if (CheckInternetConnection.isConnectingToInternet()) {
aQuery.ajax(Url.urlUserHistoryAdList, params, JSONObject.class, new AjaxCallback<JSONObject>() {
@Override
public void callback(String url, JSONObject json, AjaxStatus status) {
if (json != null) {
String jsonString=json.toString();
// Do whatever want in your fetched json from server
} else {
// json not getting properly, json data null
}
}
}.header("Content-Type", "application/json; charset=utf-8").header(token, "123456789"));
所以请试试这个,可能会完美地工作。有关 Aquery 的更多详细信息,请参阅完整文档:https://code.google.com/p/android-query/wiki/AsyncAPI
使用这种方法 https://code.google.com/p/android-query/wiki/AsyncAPI ,我编写了这段代码以从 api[=33 获取 json 数据=],却得到 null
,为什么?
是这段代码有问题还是方法有问题?
//获取代码
public static void fetchCodeData(Context context2) {
AQuery aQuery = new AQuery(context2);
if(CheckInternetConnection.isConnectingToInternet()) {
aQuery.ajax(url, null, JSONObject.class, getGrandCodeCallback());
}
}
和
private static AjaxCallback<JSONObject> getGrandCodeCallback() {
return new AjaxCallback<JSONObject>() {
private String accessCode;
@Override
public void callback(String url, JSONObject object, AjaxStatus status) {
// get data here
Log.e("Object", "object=" + object.toString());
if (object != null) {
try {
accessCode = object.getJSONObject("data").getString("code");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}.header("Content-Type", "application/json; charset=utf-8")
.header(Client_ID, Client_ID)
.header(Client_SECRET, Client_SECRET);
}
正在拜访 java class activity :
fetchCodeData(getApplicationContext());
Log.e("getCallback",
"AllOverApplicationVariable.accessCode==="
+ AllOverApplicationVariable.accessCode);
输出看起来像这样,在方法调用后 return null 但再次调用方法并获得 json 值?我不知道 ?为什么会这样?
06-16 17:58:29.196: E/getCallback(12435): AllOverApplicationVariable.accessCode===null
06-16 17:58:30.202: E/Object(12435): object={"data":{"state":"","scope":"","expires":"2015-06-17 17:58:30","code":"69e11cfb3243244da5dc6b0aac1515569c06d2d2","response_type":"code","client_id":"1","redirect_uri":"http://localhost/eads"}}
AQuery 支持多部分 post,例如将图像上传到服务。简单地做一个常规的 POST 并放入字节数组,Inputstream 你能指出我的错误吗,我哪里做错了。
@BB:你的最终代码应该是,
public static void fetchCodeData(Context context2) {
AQuery aQuery = new AQuery(context2);
if(CheckInternetConnection.isConnectingToInternet()) {
aQuery.ajax(url, AllOverApplicationVariable.accessCode, getGrandCodeCallback());
}
}
也许这会奏效。
使用Aquery从服务器获取数据很简单。如果您使用 header 和参数,则执行此操作:
确保清单中包含以下权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
以及您必须实施的代码,
AQuery aQuery = new AQuery(mcontext);
Map<String, Object> params = null;
JSONObject mainJson = new JSONObject();
try {
// this is paramters
mainJson.put("username", "jack");
mainJson.put("pwd", "jack");
StringEntity sEntity = new StringEntity(mainJson.toString(), HTTP.UTF_8);
params = new HashMap<String, Object>();
params.put(AQuery.POST_ENTITY, sEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
if (CheckInternetConnection.isConnectingToInternet()) {
aQuery.ajax(Url.urlUserHistoryAdList, params, JSONObject.class, new AjaxCallback<JSONObject>() {
@Override
public void callback(String url, JSONObject json, AjaxStatus status) {
if (json != null) {
String jsonString=json.toString();
// Do whatever want in your fetched json from server
} else {
// json not getting properly, json data null
}
}
}.header("Content-Type", "application/json; charset=utf-8").header(token, "123456789"));
所以请试试这个,可能会完美地工作。有关 Aquery 的更多详细信息,请参阅完整文档:https://code.google.com/p/android-query/wiki/AsyncAPI