请问,Volley 会自动将我的 GET 参数添加到 URL 中吗?对我来说,它不起作用,而且在查看源代码时,我只是找不到任何对 getParams 方法的调用。 那么我应该自己构建 URL 吗?完全没有问题,我只是觉得当有像getParams这样的方法时,它可以为我做到这一点:)
更新:下面是我的代码..
public class BundleRequest extends com.android.volley.Request<Bundle>{
private String token;
private OnAuthTokenValidatorResponseListener mListener;
private final Map<String, String> mParams = new HashMap<String, String>();;
public BundleRequest(int method, String url, Response.ErrorListener listener) {
super(method, url, listener);
}
public BundleRequest(int method, String url,OnAuthTokenValidatorResponseListener providedListener, Response.ErrorListener listener, String token) {
super(method, url, listener);
this.token = token;
mListener = providedListener;
mParams.put(AuthenticatorConfig.TOKEN_VALIDATION_PARAMNAME, token);
}
@Override
public Map<String, String> getParams() throws AuthFailureError {
return mParams;
}
@Override
protected Response<Bundle> parseNetworkResponse(NetworkResponse httpResponse) {
switch (httpResponse.statusCode) {
case AuthTokenValidator.TOKEN_VALID_RESPONSE_CODE:
//token is ok
JSONObject response;
try {
response = new JSONObject(new String(httpResponse.data, HttpHeaderParser.parseCharset(httpResponse.headers)));
Bundle userDataResponse = new Bundle();
userDataResponse.putInt("responseCode", httpResponse.statusCode);
userDataResponse.putString("username", response.getString("user_id"));
userDataResponse.putString("email", response.getString("user_email"));
userDataResponse.putString("expiresIn", response.getString("expires_in"));
userDataResponse.putString("scope", response.getJSONArray("scope").getString(0));
userDataResponse.putString("token", token);
return Response.success(userDataResponse, HttpHeaderParser.parseCacheHeaders(httpResponse));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return Response.error(new VolleyError("Unsupported encoding"));
} catch (JSONException e) {
e.printStackTrace();
return Response.error(new VolleyError("Problem while parsing JSON"));
}
case AuthTokenValidator.TOKEN_INVALID_RESPONSE_CODE:
//token is not valid
mListener.onValidatorResponse(httpResponse.statusCode);
try {
mListener.onValidatorResponse(parseOnErrorResponse(new String(httpResponse.data, HttpHeaderParser.parseCharset(httpResponse.headers))));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
default:
return Response.error(new VolleyError("Error status code:" + httpResponse.statusCode));
}
}
protected int parseOnErrorResponse(String responseBody) {
try {
JSONObject response = new JSONObject(responseBody);
String moreInfo = response.getString("more_info");
if (moreInfo.equals("Token was not recognised")) {
return AuthTokenValidator.TOKEN_WAS_NOT_RECOGNISED;
} else if (moreInfo.equals("Token has expired")) {
return AuthTokenValidator.TOKEN_HAS_EXPIRED;
} else if (moreInfo.equals("Client doesn't exist anymore")) {
return AuthTokenValidator.CLIENT_DOES_NOT_EXIST_ANYMORE;
} else if (moreInfo.equals("Client is locked")) {
return AuthTokenValidator.CLIENT_IS_LOCKED;
} else {
return AuthTokenValidator.UNKNOWN_ERROR;
}
} catch (JSONException e) {
e.printStackTrace();
return AuthTokenValidator.UNKNOWN_ERROR;
}
}
@Override
protected void deliverResponse(Bundle response) {
mListener.onGetUserDataResponse(response);
}
}
实际上 params 参数现在是多余的
最佳答案
getParams() 未在 GET 方法上调用,因此您似乎必须在发送请求之前将其添加到 URL。
查看 JavaDoc:
Returns a Map of parameters to be used for a POST or PUT request.
Can throw {@link AuthFailureError} as authentication may be required to provide these values.
Note that you can directly override {@link #getBody()} for custom data.
@throws AuthFailureError in the event of auth failure
关于android - Volley 不会为我的自定义请求调用 getParams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18484647/
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>