Java 在url处使用特殊字符进行改装
在我当前的项目中,我对URL上的“和”=”符号有一些问题 “userlogin”=“示例” 我什么都试过了。“@Path”不起作用,当我尝试“@Query”时,字符“=”和“'”被更改为ASCII,不起作用 我怎么能提出这样的要求呢Java 在url处使用特殊字符进行改装,java,android,retrofit,okhttp,okhttp3,Java,Android,Retrofit,Okhttp,Okhttp3,在我当前的项目中,我对URL上的“和”=”符号有一些问题 “userlogin”=“示例” 我什么都试过了。“@Path”不起作用,当我尝试“@Query”时,字符“=”和“'”被更改为ASCII,不起作用 我怎么能提出这样的要求呢 谢谢大家! 通常,通过url传递的参数以不同的方式传递。在您的情况下,它将是: 通常没有“”字符 例如,我使用node.js,因此如下所示: app.get('/login', function(req, res) { var userLogin = req.
谢谢大家! 通常,通过url传递的参数以不同的方式传递。在您的情况下,它将是: 通常没有“”字符 例如,我使用node.js,因此如下所示:
app.get('/login', function(req, res) {
var userLogin = req.query.userLogin;
var otherVariable = req.query.otherVariable;
// Do whatever you want.
});
如果api喜欢,请检查api url
http://mysampledomain.com/login?userlogin=sample&otherVariable=otherValue
然后
使用这种方法
public static final String BASE_URL + "http://mysampledomain.com/";
public interface RetrofitClient{
@GET("login")
Call<String> login(@QueryMap Map<String, String> map);
}
public静态最终字符串BASE\u URL+”http://mysampledomain.com/";
公共接口客户端{
@获取(“登录”)
调用登录(@QueryMap-Map);
}
称之为
Map<String, String> map = new HashMap<>();
map.put("userlogin", "sample");
map.put("param2", "param2");
OkHttpClient.Builder okBuilder = new OkHttpClient.Builder();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit r = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.client(okBuilder.build())
.build();
r.create(RetrofitClient.class).login(map).enqueue(this);
Map Map=newhashmap();
map.put(“userlogin”、“sample”);
map.put(“param2”、“param2”);
OkHttpClient.Builder okBuilder=新的OkHttpClient.Builder();
Gson Gson=new GsonBuilder()
.setLenient()
.create();
改装r=新改装.Builder()
.baseUrl(基本URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.client(okBuilder.build())
.build();
r、 创建(client.class).login(map.enqueue)(this);
我找到了解决方案
对于任何有帮助的人,我使用了@Url注释,如下所示:
@GET
Call<ApiResponseModel> getUserDetails(@Header("Authorization") String token, @Url String fullUrl);
@GET
调用getUserDetails(@Header(“Authorization”)字符串令牌,@Url字符串fullUrl);
感谢所有回答我问题的人:)有些惯例你应该遵守。您的最终url应采用以下形式:
http://mysampledomain.com/login?userlogin=sample¶m2=value2
(您可以根据需要添加或删除参数)是否要通过改装发出GET请求?是的,我知道,但后端是以这种方式开发的,无法更改。有没有办法让这些服务进行改造?是的,我知道几乎所有的服务都不能使用这种模式,但我必须让我的应用程序使用这种服务:(问题是URL需要引号和等号,如下所示:“我的API需要该模式,但我无法解决它。然后,您在上述方法中传递完整的URL
Map<String, String> map = new HashMap<>();
map.put("userlogin", "sample");
map.put("param2", "param2");
OkHttpClient.Builder okBuilder = new OkHttpClient.Builder();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit r = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.client(okBuilder.build())
.build();
r.create(RetrofitClient.class).login(map).enqueue(this);
@GET
Call<ApiResponseModel> getUserDetails(@Header("Authorization") String token, @Url String fullUrl);