Java 在url处使用特殊字符进行改装

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上的“和”=”符号有一些问题

“userlogin”=“示例”

我什么都试过了。“@Path”不起作用,当我尝试“@Query”时,字符“=”和“'”被更改为ASCII,不起作用

我怎么能提出这样的要求呢


谢谢大家!

通常,通过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);