我想让Volley和Robolectric一起工作.我可以看到我的HTTP请求被调用,并且调用了parseNetworkResponse(我正在发送一个JsonRequest的自定义子类),但我的监听器没有被调用.有什么建议?这是一个代码示例:
@Test
public void testTypeAheadClient() throws Exception {
Robolectric.getFakeHttpLayer().interceptHttpRequests(false);
//mRemoteRequestQueue and mCustomRequest are set up previously
mRemoteRequestQueue.add(mCustomRequest);
}
private static class CustomRequest extends JsonRequest<MyObject> {
public CustomRequest(String url,
Response.Listener<MyObject> listener,
Response.ErrorListener errorListener) {
super(Request.Method.GET, url, null, listener, errorListener);
}
@Override
protected Response<MyObject> parseNetworkResponse(NetworkResponse response) {
System.out.println("in parseNetworkResponse");
try {
MyObject myObject = new MyObject(new JSONArray(new String(response.data, "UTF-8")));
return Response.success(myObject, HttpHeaderParser.parseCacheHeaders(response));
} catch (Exception e) {
e.printStackTrace();
return Response.error(new ParseError(e));
}
}
}
Run Code Online (Sandbox Code Playgroud) 观看了今年的Google IO会议后:"Google I/O 2013 - 排球:Android的简单,快速网络"
我决定更换我当前的RESTful实现,转而使用Volley.正如所建议的那样,我已将googlecode的存储库克隆到我的项目中,并将其作为库项目包含在内.
一切都很好,这个库确实很棒,但是如果没有正式版本只在主分支上提交,我怎么能告诉它什么时候更新呢?谁负责宣布哪些版本稳定哪些版本不稳定?是否有任何官方博客可以获得有关此框架的更新?
谢谢
在iOS上的Restkit中有一个详细的调试选项.RKLogConfigureByName("*", RKLogLevelTrace);.有谁知道Volley是否有相同的东西.基本上我直接使用ErrorListener,但我没有在LogCat中获得其他信息.都:
VolleyLog.e("Error: ", error.toString());
Run Code Online (Sandbox Code Playgroud)
和:
VolleyLog.e("Error: ", error.getMessage());
Run Code Online (Sandbox Code Playgroud)
打印:
2.onErrorResponse: Error:
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Android中的Volley将一些参数发布到我的rails API.这是代码:
我尝试了两个日志语句,一个在getParams(),另一个在getHeaders().getHeaders()记录中的一个而另一个不记录.为什么凌空无视getParams()?
{
//full_name,email,password are private variables defined for this class
String url = "http://10.0.2.2:3000/users/sign_up.json" ;
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
pDialog.hide();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
pDialog.hide();
}
}) {
@Override
public Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
//This does not …Run Code Online (Sandbox Code Playgroud) 我想在排球网络库中使用SSL Pinning.有没有办法用凌空实现SSL固定?凌空是否为安全性改进提供了这种支持?
我想给我的用户提供了一个更好的线下的用户体验,因此,我想建立一个Service存储所有POST,DELETE,PUT(GET是没有意义的,因为GET没有网络呼叫是缓存调用)要求用户做下线,并将它们发送到用户获得互联网连接后立即服务器.我希望它是持久的:即使应用程序被杀死,也会发送数据,以免在缓存和服务器数据之间产生不一致.
我对Google Volley和Android Networking API非常熟悉 - >我知道如何检测没有网络,如何预取数据,缓存它们等等...
但是有关于这个主题的要点或图书馆吗?我知道最新的Facebook版本实现了这样一个系统,但我不知道他们是怎么做的(我的意思是,我知道它们正在使用Service但它们是如何完成的,不知道!).有人对此有任何想法,有经验吗?
目前我正在维护一个静态的Volley请求队列,如下所述:
private static RequestQueue mReqQueue;
Run Code Online (Sandbox Code Playgroud)
每个应用程序应该只有一个静态请求队列吗?拥有多个人有什么危害?例如,如果我想要一个请求队列来处理Twitter请求,该怎么办?另外还有其他一切,如身份验证,图像检索等.
我在我的项目中使用Android Volley lib来执行网络请求,所有工作都很顺利但是我对这个lib的"取消"功能有一些麻烦.我解释我的问题..
我有一个活动,我在OnCreate方法中执行请求,请求被调用,没问题.但为了确保该cancel方法有效,我想测试并尝试两件事:
我解雇了我的请求,就像取消它之后:
MySingleton.getMyData("urltocall", getDataListener, requestTag);
MySingleton.getRequestQueue().cancelAll(requestTag);
这一个有效!取消被调用(我也可以在Volley的Request类中看到它):
public void cancel() {
mCanceled = true; // my breakpoint is called here
}
Run Code Online (Sandbox Code Playgroud)
我激活了我的请求,在调用了我的活动的finish()方法和活动的方法onDestroy和/或onStop方法后,我正在调用相同的代码:
MySingleton.getMyData("urltocall", getDataListener, requestTag);
MySingleton.getRequestQueue().cancelAll(requestTag);
但这不起作用!
requestTag不是null并且很好地传递给Volley,所以我无法理解为什么第一种方法有效而不是另一种方法...知道我的目的是在onDestroy被调用时取消请求..
谢谢你的帮助
所以我正在为我的服务器创建一个POST JSonObjectRequest,当它成功时一切正常并且信息被发布,但是如果有错误并且我尝试在吐司中显示它,它会显示为空白.这是我的要求:
private void logUserIn() {
final String URL = Globals.BASE_URL +"/auth/login/";
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("username", username.getText().toString());
params.put("password", password.getText().toString());
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Log.d("Log In User", response.toString());
//logged in db, changes screens
Intent nextScreen = new Intent(getApplicationContext(), MyProfile.class);
startActivity(nextScreen);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public …Run Code Online (Sandbox Code Playgroud) 我很遗憾地问这个非常简单的问题,但是我试图找到Android Volley的最后一个版本超过半小时.
这里:https://developer.android.com/training/volley/index.html我找到了
dependencies {
...
compile 'com.android.volley:volley:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
但我确信这不是最后一个版本.使用这个答案没有帮助,因为它没有显示凌空的任何更新.
谢谢