Java 如何在改造中传递原始json数据
我正在改造中实现以下web api。 为了调用api,我实现了三个类 api.javaJava 如何在改造中传递原始json数据,java,android,retrofit,Java,Android,Retrofit,我正在改造中实现以下web api。 为了调用api,我实现了三个类 api.java public interface Api { @POST("/login.jsp") void login(@Body LoginRequest loginRequest, Callback<String> callback); } public class LoginRequest { private String username; private Stri
public interface Api {
@POST("/login.jsp")
void login(@Body LoginRequest loginRequest, Callback<String> callback);
}
public class LoginRequest {
private String username;
private String password;
public LoginRequest() {
}
public LoginRequest(String username, String password) {
this.username = username;
this.password = password;
}
}
public class ServiceClient {
private static Api api;
private static String BASE_URL = "http://example.com/xxx";
static {
setupServiceClient();
}
private ServiceClient() {}
public static Api get() {
return api;
}
private static void setupServiceClient() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
api = retrofit.create(Api.class);
}
}
ServiceClient.java
public interface Api {
@POST("/login.jsp")
void login(@Body LoginRequest loginRequest, Callback<String> callback);
}
public class LoginRequest {
private String username;
private String password;
public LoginRequest() {
}
public LoginRequest(String username, String password) {
this.username = username;
this.password = password;
}
}
public class ServiceClient {
private static Api api;
private static String BASE_URL = "http://example.com/xxx";
static {
setupServiceClient();
}
private ServiceClient() {}
public static Api get() {
return api;
}
private static void setupServiceClient() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
api = retrofit.create(Api.class);
}
}
然后我尝试如下调用api
ServiceClient.get().login(new LoginRequest(user, password), new Callback<String>() {
@Override
public void onResponse(Response<String> response, Retrofit retrofit) {
Log.i(TAG, "SUCESS");
}
@Override
public void onFailure(Throwable t) {
Log.i(TAG, "ERROR");
}
});
ServiceClient.get().login(新登录请求(用户、密码)、新回调(){
@凌驾
公共响应(响应、改装){
Log.i(标记“success”);
}
@凌驾
失效时的公共无效(可丢弃的t){
Log.i(标记“错误”);
}
});
但不幸的是,该应用程序在调用api后崩溃。我怀疑这个问题与原始json参数值有关。
有什么建议吗?
谢谢 欢迎来到Stackoverflow。您可以从您的logcat发布stacktrace吗?将
.setLogLevel(RestAdapter.LogLevel.FULL)
添加到改装.Builder
,然后从logcat发布日志您是否能够解决问题?在使用改型实现登录时,我也遇到了问题。我能够通过检查日志来检测web api的输出值问题。在我的例子中,登录api只返回带有空字符串值的状态代码。因此,将空字符串值转换为GSON会使改装变得混乱。我已经向服务器发送了修改web api的请求。我来看看会怎么样。我将在这里发布一个结果。登录api已更改为返回NULL,状态代码为。其他API返回JSON值。但我通过登录api收到以下错误消息。“com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)接受第1行第12列路径$的格式错误的JSON”有任何建议吗?欢迎使用Stackoverflow。您可以从您的logcat发布stacktrace吗?将.setLogLevel(RestAdapter.LogLevel.FULL)
添加到改装.Builder
,然后从logcat发布日志您是否能够解决问题?在使用改型实现登录时,我也遇到了问题。我能够通过检查日志来检测web api的输出值问题。在我的例子中,登录api只返回带有空字符串值的状态代码。因此,将空字符串值转换为GSON会使改装变得混乱。我已经向服务器发送了修改web api的请求。我来看看会怎么样。我将在这里发布一个结果。登录api已更改为返回NULL,状态代码为。其他API返回JSON值。但我通过登录api收到以下错误消息。“com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)接受第1行第12列路径$处格式错误的JSON”有任何建议吗?